Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Saudações!!!
Senhores não sei se devo postar mas vou. Acho até meio estranho isso mas é a necessidade do momento.
Como seria um t-sql agil e pratico para fazer:
PEGUE OS DADOS DA TABELA A QUE NÃO ESTÁ NA B!
Eu tentei de virsas formas e não cheguei à algo prático. Podem me ajudar ?
$q = "SELECT * FROM A, B WHERE A.id <> B.a_id ORDER BY A.b DESC;";
Muito Obrigado
E ai beleza???Tente fazer isto:select * from TABELA1 left outer join TABELA2 on (CAMPO1=CAMPO2) where QQ CAMPO DA TABELA 2 is nullVE SE DÁ CERTO..T+
E ai Leo, beleza ?Valeu pela força mas não adiantou muito não. Acho que vai ter que ser na base: TODOS DE UMA -> LOOPING -> COUNT NA OUTRA -> SE NAÕ ESTIVER -> ENVIAR NEWS());Muito Obrigado
No manual do MySQL temos o seguinte exemplo e explicação:
Se não houver registros coincidentes para a tabela a direita da parte ON ou USING em um LEFT JOIN, uma linha com NULL atribuído a todas as colunas é usada para a tabela a direita. Você pode usar este fato para encontrar registro em uma tabela que não houver contrapartes em outra tabela
mysql> SELECT tabela1.* FROM tabela1 -> LEFT JOIN tabela2 ON tabela1.id=tabela2.id -> WHERE tabela2.id IS NULL;
Este exemplo encontra todas as linhas em tabela1 com um valor id que não está presente em tabela2 (isto é, toda as linhas em tabela1 sem linha correspondente em tabela2). Assume-se que tabela2.id é declarada NOT NULL.
Tb poderia fazer usando o "not in"select *from Awhere not A.id in (select B.id from B)
Senhores !
Aproveitando o assunto, tenho um problema com o mysql nesse tipo de consulta que até agora não entendo o que acontece. Tenho uma tabelaA com 50000 registros e uma tabelaB com 8000, e preciso fazer um update num dos campos de tabelaA quando não encontrar coincidentes na tabelaB.
tabelaA
chave varchar(24)
valor
ocorrencia
tabelaB
chave varchar(24)
status
método1: update tabelaA left join tabelaB on tabelaA.chave = tabelaB.chave set ocorrencia = 'teste1' where tabelaB.chave is null.
Problema: essa consulta fica rodando "horas", sim, horas mesmo, não é força de expressão, e o campo apontado não é atualizado.
método2: update tabelaA set ocorrencia = 'teste2' where tabelaA.chave not in (select distinct chave from tabelaB)
Problema: essa consulta fica rodando "horas", sim, horas mesmo, não é força de expressão, e o campo apontado não é atualizado.
As duas tabelas são MyIsam, sem indice. Já reparei o banco de dados, otimizei, e ainda assim não funciona. Seria o problema causado por causa do "nosso amigo" varchar ?
Help me please !
Eu acho bem provável que realmente seja com o seu campo varchar, ainda mais que não tem indice na tabela.
Eu acho bem provável que realmente seja com o seu campo varchar, ainda mais que não tem indice na tabela.
Realmente, foi só mudar de varchar para char (infelizmente tem de ser assim mesmo), e funcionou. Nem precisei usar chave. VARCHAR não serve pra esse tipo de coisa, só para nomes e descrições mesmo.Valeu.
E ai beleza???Tente fazer isto:select * from TABELA1 left outer join TABELA2 on (CAMPO1=CAMPO2) where QQ CAMPO DA TABELA 2 is nullVE SE DÁ CERTO..T+