Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ursolouco

A não esta na B

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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+

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 !

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.