Ajuda com join+except[Resolvido]

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!!!

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.

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;"bibiana5.0@hotmail.com"
16;"brunopiazentim@gmail.com"

========================================
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;"teste@gmail.com"
8;"bibianarocha@hotmail.com"
9;"bibianasilva@hotmail.com"
7;"celsolemos@hotmail.com"
2;"bibiana5.0@hotmail.com"
13;"andre@gmail.com"
15;"danilo@programa.com"

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.

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

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;"bibiana5.0@hotmail.com"  
16;"brunopiazentim@gmail.com"  
  
========================================  
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;"teste@gmail.com"  
8;"bibianarocha@hotmail.com"  
9;"bibianasilva@hotmail.com"  
7;"celsolemos@hotmail.com"  
2;"bibiana5.0@hotmail.com"  
13;"andre@gmail.com"  
15;"danilo@programa.com" 

o resultando que qro é 16;"brunopiazentim@gmail.com" pois eu nao add esse cara ainda como amigo somente ele me add

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

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

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 …

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  

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