Duvida comando Select

Delphi

25/02/2005

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

Curtidas 0

Respostas

Delphi32

Delphi32

25/02/2005

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


GOSTEI 0
Diogoalles

Diogoalles

25/02/2005

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


GOSTEI 0
Mnardo

Mnardo

25/02/2005

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


GOSTEI 0
Paulo_amorim

Paulo_amorim

25/02/2005

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é+


GOSTEI 0
Fred

Fred

25/02/2005

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


GOSTEI 0
Paulo_amorim

Paulo_amorim

25/02/2005

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


GOSTEI 0
Mnardo

Mnardo

25/02/2005

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


GOSTEI 0
POSTAR