GARANTIR DESCONTO

Fórum Duvida comando Select #270104

25/02/2005

0

Estou com a seguinte duvida
tenho 1 banco de dados em interbase com as seguintes tabelas e campos:

Tabela Usuarios
id - integer
nome - char(30)

Tabela Dependentes
id - integer
id_ususario - integer
nome - char(30)

Preciso fazer uma consulta dessa maneira : mostrar todos os usuarios e os dependentes deste usuario:
estou usando o comando (exemplo para id = 1 ):
SELECT * FROM USUARIOS,DEPENDENTES WHERE USUARIOS.ID = 1 AND DEPENDENTES.ID_USUARIO = 1
Quando a tabela possui dependentes para este usuario 1 , o comando retorna o que eu quero.
O problema que eu estou encontrando, é quando um usuário não possui dependentes, dai o comando select não retorna nada
Eu queria que quando o usuário não possuisse dependentes, mostrar pelo menos os dados do usuário.

É que o meu sistema imprime um relatório da seguinte maneira :

usuario
_____________
dependente 1
dependente 2
etc...

e eu queria que saisse pelo menos o usuario no relatório quando não tivesse dependentes

Atenciosamente

Marcio Nardo


Mnardo

Mnardo

Responder

Posts

25/02/2005

Delphi32

execute a seguinte SQL:

SELECT
   T1.NOME,
   T2.NOME
FROM
   USUARIOS T1
LEFT JOIN
   DEPENDENTES T2 ON T1.ID=T2.ID_USUARIO


acho q eh isso. Até!


Responder

Gostei + 0

25/02/2005

Diogoalles

veja o link abaixo
http://forum.clubedelphi.net/viewtopic.php?t=58222&highlight=outer

o select do delphi32 esta com sintaxe incorreta

abraço
Diogo


Responder

Gostei + 0

25/02/2005

Mnardo

Seira muito pedir para voces colocasse a sintaxe exata para mim conformo o meu exemplo, pois eu não entendi direito

seria isso :

SELECT USUARIOS,DEPENDENTES FROM USUARIOS LEFT OUTER JOIN
DEPENDENTES ON (DEPENDENTES.ID_USUARIO = 1 ) === PARA ID = 1

?
Atencisamente


Responder

Gostei + 0

25/02/2005

Paulo_amorim

Olá

o select do delphi32 esta com sintaxe incorreta

Não achei onde está o erro dele


A parte de Join você faz assim como estava escrito lá... a sua condição (id=1) você só coloca no WHERE

SELECT * FROM usuarios u LEFT JOIN dependentes d ON u.id = d.id_usuario
WHERE u.id = 1


Espero que ajude
Até+


Responder

Gostei + 0

25/02/2005

Fred

SELECT D.*, U.NOME FROM DEPENDENTES D
INNER JOIN USUARIOS U ON (U.ID = D.ID_USUARIO)
WHERE U.ID = 1


Responder

Gostei + 0

25/02/2005

Paulo_amorim

Olá

Usando inner join ele não terá o resultado esperado, pois como não haverá um dependente ele não achará um correspondente na tabela e o registro não aparece


Responder

Gostei + 0

25/02/2005

Mnardo

Obrigado a todos que me ajudaram, principalmente ao Paulo Amorim

deu certinho. com o tempo eu vou pegando o jeito da sintaxe SQL.

Abraços

Marcio


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar