Duvida comando Select
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
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
Curtidas 0
Respostas
Delphi32
25/02/2005
execute a seguinte SQL:
acho q eh isso. Até!
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
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
http://forum.clubedelphi.net/viewtopic.php?t=58222&highlight=outer
o select do delphi32 esta com sintaxe incorreta
abraço
Diogo
GOSTEI 0
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
seria isso :
SELECT USUARIOS,DEPENDENTES FROM USUARIOS LEFT OUTER JOIN
DEPENDENTES ON (DEPENDENTES.ID_USUARIO = 1 ) === PARA ID = 1
?
Atencisamente
GOSTEI 0
Paulo_amorim
25/02/2005
Olá
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
Espero que ajude
Até+
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
25/02/2005
SELECT D.*, U.NOME FROM DEPENDENTES D
INNER JOIN USUARIOS U ON (U.ID = D.ID_USUARIO)
WHERE U.ID = 1
INNER JOIN USUARIOS U ON (U.ID = D.ID_USUARIO)
WHERE U.ID = 1
GOSTEI 0
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
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
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
deu certinho. com o tempo eu vou pegando o jeito da sintaxe SQL.
Abraços
Marcio
GOSTEI 0