Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Tudo que Denis Courcy postou

  1. Denis Courcy

    ajuda com select

    Por favor post erros de php no forum de php. Movendo Mysql -->> php
  2. Use like. veja o link http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html O primeiro exemplo retorna os que começam com "b"
  3. Faça assim: SELECT s.setor, SUM(IF(`data da tabela` >= DATE(NOW()) AND `data da tabela` <= DATE_ADD(DATE(NOW()), INTERVAL 5 DAY),1,0)) AS `0 - 5 dias` SUM(IF(`data da tabela` >= DATE_ADD(DATE(NOW()), INTERVAL 6 DAY AND `data da tabela` <= DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `6 - 10 dias`, SUM(IF(`data da tabela` > DATE_ADD(DATE(NOW()), INTERVAL 10 DAY),1,0)) AS `+10 dias` FROM producao p JOIN producao_setor s ON p.setor = s.codproducao_setor WHERE p.status = 'Aberta'; GROUP BY s.setor`data da tabela` é o nome que dei ao campo data em sua tabela, que realizará o controle de dataDATE(NOW()) converte a data e hora gerada pelo sistema em data a ser usada como comparador DATE_ADD adiciona um péríodo de tempo qualquer. Nesta caso foi definido como INTERVAL x DAY, onde x é o número de dias no futuro a partir de uma data base (a data do sistema)
  4. Denis Courcy

    Como saber

    Infelizmente não, Flechaus. O único conteúdo em português foi publicado para a versão 4.1. tércio fernandes, lendo novamente este tópico, lembrei que você pode adicionar um campo timestamp em cada tabela, com a seguinte formação: alter table tabela add column `dtAlteracaoRegistro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP;Eu uso para saber quando um registro foi alterado.Não precisa de trigger. Ele atualiza automaticamente.
  5. Baseado na estrutura de dados que você postou faça: SELECT p.id, p.id_paciente, p.data_atendimento, m.med_nome, t.tipo_atend FROM prontuario p INNER JOIN medicos m ON m.id_medico = p.id_medico INNER JOIN tipo_atendimento t ON t.id_atend = p.id_atend WHERE prontuario.id_paciente = '224' AND (p.data_atendimento BETWEEN '2014-01-01' AND '2014-12-30') LIMIT 0 , 30;
  6. Funciona sim. Fiz o teste abaixo: create table tabela_a( ID int unsigned not null auto_increment, Nome varchar(50) not null, primary key (ID) ); insert into tabela_a(id,nome) values(1,'José'),(2,'Maria'),(3,'João'); create table tabela_b( ID int unsigned not null auto_increment, Nome varchar(50) not null, primary key (ID) ); insert into tabela_b(id,nome) values(1,'José'),(2,'Maria'); ; select * from tabela_a a left join tabela_b b on b.id=a.id where b.id is nullO result set foi"ID" "Nome" "ID" "Nome" "3" "João" \N \N
  7. Controle através de linguagem de programação. Crie uma tabela com o que cada usuário pode acessar e prossiga daí. É a melhor forma. A mais limpa.
  8. Faça assim: SELECT * from tabela_a a LEFT JOIN tabela_b b ON b.id = a.id WHERE b.id IS NULL
  9. Oi Avalon Consegues ver a diferença? CREATE TABLE IF NOT EXISTS `BASEBD`.`PESQUISADOR` ( `IDPESQUISADOR` INT UNSIGNED NOT NULLCREATE TABLE IF NOT EXISTS `BASEBD`.`BASE_has_PESQUISADOR` ( `BASE_IDBASE` INT NOT NULL, `PESQUISADOR_IDPESQUISADOR` INT NOT NULL,Para estabelecer uma constraint entre duas tabelas, os campos DEVEM SER DO MESMO TIPO E TAMANHO.Na tabela PESQUISADOR você definiu IDPESQUISADOR como INT UNSIGNED e na tabela BASE_has_PESQUISADOR você definiu o campo PESQUISADOR_IDPESQUISADOR como INT. São tamanhos diferentes, pois INT UNSIGNED armazena valores entre 0 e 4294967295. e o INT armazena valores entre -2147483648 e 2147483647.
  10. A melhor solução seria fazer uma storage procedure, incluir um cursor para esta tabela, ler cada registro, criticá-lo conforme sua necessidade e atualizá-lo.
  11. Oi Jairo, Você precisa do join, pois a solução de seu problema precisa que ele obtenha um total para que possa gerar cálculos para cada linha. O jeito que você estava tentando não dá certo. Não há como calcular sem saber o total.O join só ficará mais lento se você não usar índices. Não por isso.
  12. Supondo que o campo nome possua uma chave unica ou seja seu campo primary key, então faça assim: SELECT nome, valorTotal, qtd, valortotal/qtd AS valorUnitario FROM tabela1 t1 inner join (select nome, sum(valor) AS valorTotal FROM tabela1 group by nome) t2 ON t2.nome = t1.nome
  13. Seria algo parecido com isto: Se o produto for item de um kit então id_kit recebe o item do produto kitsenão, recebe o id de produto dele mesmo ou zero, como você preferir. Assim, para buscar os item de um produto que é kit, use o select select * from produto p inner join produto kit on kit.id_kit = p.id e,para consultar todos os produtos, sem olhar os itens dos kits, faça: select * from produto where id_kit = 0se você usou 0 para diferenciar ou select * from produto where id_kit = idse você usou id produto para diferenciar. (Eu prefiro esta segunda opção)
  14. Remova esta instrução de seu script SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  15. Encapsule a instrução em um storage procedure. O mysql não está sabendo o que fazer com a instrução que você está passando.
  16. Técio, não há como utilizar prepared statments em vesões anteriores a 5.0 do mysql. Assim como storage procedures, trigers e functions. Você deverá usar outro recurso de sql para realizar esta tarefa.
  17. Já não lembro muito do mysql 3, mas vamos acompanhar para tentarmos resolver. As interrogações são só um exemplo para demonstrar parâmetros? Você já tentou em um banco de teste colocar um valor literal e ver a resposta? Para tabela temporária crie a mesma estrutura da tabela atual colocando o engine MEMORY. Na verão 3 use TYPE=MEMORY CREATE TEMPORARY TABLE exemplo( relacao de campos )TYPE=MEMORY
×
×
  • Criar Novo...