-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
(Resolvido) JOIN com duas FK da mesma PK
pergunta respondeu ao João Paulo Ricardo de Denis Courcy em MySQL
Permita-me uma brincadeira, você deve voltar aos tempos do primeiro ano do segundo grau, onde se fala de relações entre conjuntos.ehehehe. No exemplo abaixo: SELECT descricaotipopagamento, nomecartao, valor, valortaxacartao from caixa cx INNER JOIN tipopagamento tp ON tp.idTipoPagamento = cx.idTipoPagamento LEFT JOIN cartaocredito cr ON cr.idCartao = cx.idCartao WHERE dataevento > '2013-12-31'Verifique que estou listando todo o movimento de caixa de 2014 até agora;Pode haver tipos de pagamento que não são cartões de crédito. Quando isto acontecer os dados da tabela cartaocredito virão NULO No caso de tipopagamento sempre haverá uma resposta. Por isso o uso de INNER. INNER é Intercessão de conjuntos. Só traz os elementos resultantes que aparecem nos dois conjuntos. Se existir em um conjunto e não existir no outro ele não traz nada. LEFT trará TODOS os elementos do conjunto a esquerda e somente os elementos do conjunto a direita quando eles existirem. -
(Resolvido) JOIN com duas FK da mesma PK
pergunta respondeu ao João Paulo Ricardo de Denis Courcy em MySQL
Sim. O AS entre o nome da tabela e seu apelido é opcional. Quando se trata de INNER JOIN não há diferença na execução. Apenas muito mais didático. Lembre-se Hoje você faz e amanhã outro dará manutenção.Verifique que a cláusula ON é a condicional entre as duas ligações. Qualquer outro comparativo deverá ficar na cláusula WHERE. Da forma como você escreve se houver uma cláusula WHERE com muitos elementos poderá haver erro e não será fácil encontrá-lo. -
(Resolvido) JOIN com duas FK da mesma PK
pergunta respondeu ao João Paulo Ricardo de Denis Courcy em MySQL
Tente assim: SELECT * FROM chamado c INNER JOIN usuario a ON c.idatendente = a.idusuario INNER JOIN usuario r ON c.idresponsavel = r.idusuarioonde c.idatendente e c.idresponsavel são os nomes que eu dei para os respectivos atributos em chamado (já que não sei os nomes corretos e tinha que mostrar um exemplo) -
Sim. Existe.Pelo que entendi um mesmo DETALHE_ITEM pode estar em vários ITENS. O que você tem a fazer é remover o CONSTRAINT (presumindo que suas tabelas são do engine InnoDB) que liga DETALHES_ITEM_idDETALHE da tabela ITENS a tabela DETALHES_ITEM. O atributo DETALHES_ITEM_idDETALHE da tabela ITENS deve ser NULL; Todas as vezes que você for consultar elementos das duas tabelas use LEFT JOIN e não INNER JOIN.
-
Movendo MySQL -->> PHP
-
Oi crazySerk, Não há como, sem o uso de uma storage procedure, retornar valores de um select que não encontrou nenhum registro. O resultado deste select é NULL. Trate dentro de seu programa ou através de uma SP.
-
O log trabalha em cache até atingir um determinado tamanho. Veja o trecho do manual que coloquei no link acima. Além do exposto acima, você pode usar o comando flush para forçar a gravação dos buffers em disco. http://dev.mysql.com/doc/refman/5.5/en/flush.html
-
Não consigo fazer update com os campos de um formulário
pergunta respondeu ao mulequim de Denis Courcy em PHP
Seu erro não é com sql. vou transferir para o forum de php. -
MONTAR UM SELECT DE VARIAS TABELAS RELACIONADAS
pergunta respondeu ao mulequim de Denis Courcy em PHP
Não há erro no sql. Vou transferir o tópico para o fórum de php. -
MONTAR UM SELECT DE VARIAS TABELAS RELACIONADAS
pergunta respondeu ao mulequim de Denis Courcy em PHP
Ok. Agora que você me deu mais informações já posso te ajudar. Não conheço PHP Neste fórum me limito a responder somente sobre MySQL. Sobre o select 1) Quando você escreve SELECT * FROMvocê tem consciência que está trazendo todos os campos de todas as tabela relacionadas?. Sugiro que você especifique somente os campos que você deseja exibir.2) Modifique seu select para SELECT STRAIGHT_JOIN <lista de campos> FROM tb_militar m INNER JOIN tb_graduacao g ON g.gr_codigo = m.ml_fkgraduacao INNER JOIN tb_perfil p ON p.pf_codigo = m.ml_fkperfil -
MONTAR UM SELECT DE VARIAS TABELAS RELACIONADAS
pergunta respondeu ao mulequim de Denis Courcy em PHP
por favor coloque a estrutura das tres tabelas. -
Sim. Se você ativou previamente o log-binario.http://dev.mysql.com/doc/refman/5.0/en/binary-log.html
-
Se você vai fazer modificações na ddl crie o script manualmente fazendo os testes em seu banco de teste. Para não fazer bobagem, use o mysqldump para fazer um backup antes de começar
-
SIM e SIM
-
(Resolvido) Pivot somando numero de propostas
pergunta respondeu ao crazySerk de Denis Courcy em MySQL
Pelo amor de Deus, não faça isto na pivot. Passe a função como um parâmetro. É muito mais fácil. Deixe a pivot em paz. Usando seu código alguns posts acima faça: CALL rel_anual_prop ( "b.nome", "mesExtenso(month(a.data_cadastro))", "1", "propostas a left outer join empresas_lojas b on (b.cod_loja = a.cod_loja)", "where a.cod_empresa = 6");O "1" é para contar o a.cod_proposta. -
Segue abaixo a estrutura de um trigger que é disparado após a insersão de um dado, para atualização de outro em outra tabela DELIMITER $$; DROP TRIGGER `nomeDoBancoDeDados`.`nomeDoTrigger`$$ create trigger `nomeDoTrigger` AFTER INSERT on `nomeDaTabelaQueDispararáOTrigger` for each row BEGIN UPDATE nomeTabelaAlvo SET nomeCampo = valor WHERE condicao; END; $$ DELIMITER ;$$Adapte a seu código.
-
(Resolvido) Pivot somando numero de propostas
pergunta respondeu ao crazySerk de Denis Courcy em MySQL
Crie uma function que retorne char(3) e que receba como parametro um integer. DELIMITER $$; DROP FUNCTION IF EXISTS `meubancodedados`.`mesExtenso`$$ CREATE FUNCTION `meubancodedados`.`mesExtenso` (mes smallint unsigned) RETURNS char(3) BEGIN RETURN ELT(mes,"JAN","FEV","MAR","ABR","MAI","JUN","JUL","AGO","SET","OUT","NOV","DEZ"); END$$ DELIMITER ;$$Chame assim: select mesExtenso(5);A resposta é MAI -
Faça assim SELECT nome, COUNT(nome) AS qtd FROM tabela WHERE ano=2013 GROUP BY nome ORDER BY qtd DESC
-
Use um SUM com GROUP BY. Exemplo: SELECT nome, telefone, SUM(1) FROM usuario GROUP BY nome, telefone
-
TENTO INCLUIR COLUNA, TABELA TRAVA E DANIFICA
pergunta respondeu ao Debora Cristiane de Denis Courcy em MySQL
Aceitável, mas como disse antes:"O ideal é fazer esta operação (em tabela grande, principalmente), diretamente no console do servidor e estando STAND ALONE (Sem concorrência de outros usuários)." -
Table scan é uma busca sequencial. Quando em um join para cada registro da tabela pai vai procurar em todos os registros da tabela filho, não importando se o que você quer esteja só no primeiro registro. Isto acontece quando você não usa índice ou usa índice errado. No Caso acima o índice esta no primeiro elemento da condição (3 condições). Caso você não o forneça ou caso esta condição passe a ser em outra posição ele deixará de buscar pelo índice e passará a buscar por table scan. Table scan normalmente SENTA o banco. Só pra fechar, as outras condições poderiam estar na cláusula where mas, são mais eficientes se estiverem na cláusula ON do JOIN.
-
TENTO INCLUIR COLUNA, TABELA TRAVA E DANIFICA
pergunta respondeu ao Debora Cristiane de Denis Courcy em MySQL
Concordo com Flechaus.O ideal é fazer esta operação (em tabela grande, principalmente), diretamente no console do servidor e estando STAND ALONE (Sem concorrência de outros usuários). Uma tabela tão grande você realmente precisa de todos estes dados? Já considerou colocar os dados mais antigos em um banco de histórico? Pense a respeito. -
Código do primeiro post Se lanc2 tem mesmos campos de lanc você pode restringir a clausula ON do INNER JOIN. SELECT * FROM lanc t1 INNER JOIN lanc2 t2 ON t2.numero_lacamento=t1.numero_lacamento AND t1.codigo_empresa=t2.codigo_empresa AND t1.ano_lancamento=t2.ano_lancamento AND t1.mes_lancamento=t2.mes_lancamento WHERE t1.codigo_empresa = 45 and t1.mes_lancamento = 10 and t1.ano_lancamento = 2013;Cuidado. Pelo que percebi sua chave é a primeira condição. t2.numero_lacamento=t1.numero_lacamentoNão pode ser abolida nem trocar de lugar neste arranjo ou você estará fadado a um TABLE SCAN.
-
A escolha do engine tem muito a haver com a performance e o tipo de uso que você quer.Tenho sistemas que funcionam muito bem com myisam. A integridade do banco é controlada via sistema.