Ajuda com join+except[Resolvido]

9 respostas
b10machado

tb_amigos(id_amigos,id_usuarios)

select id_usuarios where id_amigos . retorna os meus amigos blz

esse retorna quem me add

select distinct * from tb_amigos A
inner join tb_usuario U on A.id_amigos = U.id_usuario
where A.id_usuario =1

eu qro uma lista final com quem me add e eu nao add ainda!!!

9 Respostas

A

Amigo creio que desse jeito vai te auxiliar

select distinct *, U.id_amigos from tb_usuario A inner join tb_amigos U on U.id_amigos = A.id_usuario where A.id_usuario =1

Creio que com o comando acima vai conseguir listar todos os amigos relacionado a esse usuário.

b10machado

nesse ai retornaria somento o user =1

seria juntar esse dois selects mais nao to sabendo

select distinct * from tb_amigos A
       inner join tb_usuario U on A.id_amigos = U.id_usuario
       where A.id_usuario =1
=========================================
retorna isso

2;"[email removido]"
16;"[email removido]"

========================================
so que esse com id=2 eu ja adicionei como no retorno abaixo, ai quro q o select nao mostre quem eu ja add

select DISTINCT A.id_usuario,A.email from tb_usuario A
       inner join tb_amigos U on U.id_usuario = A.id_usuario
       where U.id_amigos = 1

12;"[email removido]"
8;"[email removido]"
9;"[email removido]"
7;"[email removido]"
2;"[email removido]"
13;"[email removido]"
15;"[email removido]"
A

Amigo, olha como eu não sei a estrutura e ligação que existe nas tabelas o que posso aconselhar a fazer e eu já utilizei esse comando por diversas vezes é a instrução de negação.
Ao invés de passar o seu where campo = 1 você poderia passar o seu where campo not in 1.
Esse tipo de comando utilizo no banco de dados firebird, pode ser que para outros bancos sejam diferentes.

O que esse comando irá fazer é trazer todos os registros que não conterem o código especifico.

espero ter ajudado.

Aleksandro

Experimente utilizar o comando union

junte seus select , porém ambos devem ter a mesma estrutura

Select NNN from table
union
select NNN from table

Veja se te ajuda …abs

b10machado

Vaiii corinthiansss

entao cara nao consegui deu erro mais acho q num seria, esse union junta os dois?? se for num e , seria isso aki

select distinct * from tb_amigos A  
       inner join tb_usuario U on A.id_amigos = U.id_usuario  
       where A.id_usuario =1  
=========================================  
retorna isso  
  
2;"[email removido]"  
16;"[email removido]"  
  
========================================  
so que esse com id=2 eu ja adicionei como no retorno abaixo, ai quro q o select nao mostre quem eu ja add  
  
select DISTINCT A.id_usuario,A.email from tb_usuario A  
       inner join tb_amigos U on U.id_usuario = A.id_usuario  
       where U.id_amigos = 1  
  
12;"[email removido]"  
8;"[email removido]"  
9;"[email removido]"  
7;"[email removido]"  
2;"[email removido]"  
13;"[email removido]"  
15;"[email removido]"

o resultando que qro é 16;"[email removido]" pois eu nao add esse cara ainda como amigo somente ele me add

rogeriopaguilar

Tenta fazer a primeira consulta menos a segunda.
Se quiser um exemplo:

http://www.1keydata.com/pt/sql/sql-minus.php

Aleksandro

putz cara tá dificil entender o que vc quer fazer de fato …

mande o modelo destas 02 tabelas … porque acho que a forma como você modelou tá complicado … de entender a sua necessidade …

b10machado

foi mal a explicacao e que estava com pressa

mas vlw rogeriopaguilar, usei o que vc mandou e deu certo!!!

select distinct U.id_usuario,email from tb_amigos A    
       inner join tb_usuario U on A.id_amigos = U.id_usuario    
     where A.id_usuario =1  
EXCEPT 
select DISTINCT A.id_usuario,A.email from tb_usuario A    
       inner join tb_amigos U on U.id_usuario = A.id_usuario    
      where U.id_amigos = 1
Aleksandro

o importante é que deu certo …feche o tópico como Resolvido …valeu…

Criado 27 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 9
Participantes 4