INNER JOIN...

17/10/2003 - 21:38 por Fabricio Cadena | Informe spam
Hola amigos..!
Tengo el siguiente problema...

Resulta que tengo 3 Tablas.
1-Empleados
2-Encargados
3-Solicitantes

Bien.. tengo 2 Empleados llamados asi.
1=Manuel
2=Ruben
Manuel tiene 1 Encargado y 1 Solicitante
y Ruben solo tiene 1 Encargado.

Resulta que al hacer los JOIN de las 3 Tablas me muesta lo
siguiente..

Resultados de la Consulta...

Empleado Encargados Solicitantes
Manuel 1 1

PORQUE NO APARECE RUBEN?Sera porque solo tiene 1 Encargado
y no tiene Solicitantes?
Como puedo hacer para mostrar a RUBEN aunque este tenga 1
Encargado, pero que en Solicitantes no me muestre nada o 0.

Saludos y espero haberme explicado.

Preguntas similare

Leer las respuestas

#1 Javier Loria
17/10/2003 - 22:13 | Informe spam
Hola:
Como bien lo dices no muestra a Ruben porque no tiene solicitantes.
Si quieres que lo muestre deberas usar LEFT JOIN o su sintaxis completa
LEFT OUTER JOIN, esto permitira todas las filas de la tabla izquierda
incluyendo las que no cumplen la condicion del JOIN.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Fabricio Cadena escribio:
Hola amigos..!
Tengo el siguiente problema...

Resulta que tengo 3 Tablas.
1-Empleados
2-Encargados
3-Solicitantes

Bien.. tengo 2 Empleados llamados asi.
1=Manuel
2=Ruben
Manuel tiene 1 Encargado y 1 Solicitante
y Ruben solo tiene 1 Encargado.

Resulta que al hacer los JOIN de las 3 Tablas me muesta lo
siguiente..

Resultados de la Consulta...

Empleado Encargados Solicitantes
Manuel 1 1

PORQUE NO APARECE RUBEN?Sera porque solo tiene 1 Encargado
y no tiene Solicitantes?
Como puedo hacer para mostrar a RUBEN aunque este tenga 1
Encargado, pero que en Solicitantes no me muestre nada o 0.

Saludos y espero haberme explicado.
Respuesta Responder a este mensaje
#2 Fabricio Cadena
17/10/2003 - 23:14 | Informe spam
Que tal Javier..
Gracias por tu ayuda..
Ya hice lo indicado y sigue sin aparecer, no se la verdad
que este mal.Puse el LEFT OUTER JOIN Y EL LEFT JOIN y
ninguno me funciona.

Saludos...
Respuesta Responder a este mensaje
#3 Mauricio Sthandier R.
18/10/2003 - 01:14 | Informe spam
podrías exponer tu consulta SQL ?

"Fabricio Cadena" escribió en el mensaje
news:04ff01c394f3$b74e1f60$
Que tal Javier..
Gracias por tu ayuda..
Ya hice lo indicado y sigue sin aparecer, no se la verdad
que este mal.Puse el LEFT OUTER JOIN Y EL LEFT JOIN y
ninguno me funciona.

Saludos...
Respuesta Responder a este mensaje
#4 Fabricio Cadena
18/10/2003 - 03:50 | Informe spam
Que tal amigos..!!

Aqui esta mi consulta que he batallado mucho.Si no se
entiende la puedo explicar

Select Fleteros.Id_Fletero,Fleteros.Nombre as
Fletero,Choferes.Id_Chofer,Choferes.Nombre as Chofer
,sum(Embanques.volumen*Parajes.Precio) as TotalE,sum
(Entregas.Cantidad) as TotalEnt
from Choferes
INNER JOIN Fleteros ON
Choferes.Id_Fletero=Fleteros.Id_Fletero
INNER JOIN Embanques ON
Embanques.Id_Chofer=Choferes.Id_Chofer
INNER JOIN Parajes ON Embanques.Id_Paraje=Parajes.Id_Paraje
' HE AQUI LA SITUACION DE UN CHOFER QUEN O TIENE
ENTREGAS, PERO SI TIENE EMBANQUES, AL MOMENTO DE HACER LA
CONSULTA NO APARECE... EN ESTE CASO SERIA EL CHOFER 10
LEFT JOIN Entregas ON Choferes.Id_Chofer=Entregas.Id_Chofer

GROUP BY
Fleteros.Id_Fletero,Fleteros.Nombre,Choferes.Id_Chofer,Chof
eres.Nombre,Convert(char(1),Embanques.Pagado)
,Convert(char(1),Entregas.Pagado),Entregas.Concepto


HAVING Choferes.Id_Chofer IN(9,10) AND Convert(char
(1),Embanques.Pagado)=0
AND Convert(char(1),Entregas.Pagado)=0 AND
Entregas.Concepto<>'SI'
Respuesta Responder a este mensaje
#5 Mauricio Sthandier R.
18/10/2003 - 04:20 | Informe spam
ya... pasa que cuando haces un LEFT JOIN los registros de la tabla
leftjoineada se van a Null, y si preguntas por Entregas.Concepto <> 'SI' te
dará Falso, ya que Null no es ni distinto ni igual ni nada de 'SI'... tienes
que contemplar la posibilidad de que Entregas.Concepto sea Nulo, y si será
nulo por efecto del LEFT JOIN o por ser su valor actual.
Me parece también que agrupar por cualquier campo de entregas pudiendo este
ser nulo producirá resultados no deseados.

Aparte del LEFT y RIGHT JOIN hay dos más que son bastante interesantes, FULL
JOIN y CROSS JOIN. Te sugiero revisarlos después.

"...
sure you swear you are able to
lift from the unwilling patience
and heal gently the wounded and therefore annoying heart
kissing goodbye its pride
so quiet she would not ever decide ?"
"Fabricio Cadena" escribió en el mensaje
news:059c01c3951a$36110800$
Que tal amigos..!!

Aqui esta mi consulta que he batallado mucho.Si no se
entiende la puedo explicar

Select Fleteros.Id_Fletero,Fleteros.Nombre as
Fletero,Choferes.Id_Chofer,Choferes.Nombre as Chofer
,sum(Embanques.volumen*Parajes.Precio) as TotalE,sum
(Entregas.Cantidad) as TotalEnt
from Choferes
INNER JOIN Fleteros ON
Choferes.Id_Fletero=Fleteros.Id_Fletero
INNER JOIN Embanques ON
Embanques.Id_Chofer=Choferes.Id_Chofer
INNER JOIN Parajes ON Embanques.Id_Paraje=Parajes.Id_Paraje
' HE AQUI LA SITUACION DE UN CHOFER QUEN O TIENE
ENTREGAS, PERO SI TIENE EMBANQUES, AL MOMENTO DE HACER LA
CONSULTA NO APARECE... EN ESTE CASO SERIA EL CHOFER 10
LEFT JOIN Entregas ON Choferes.Id_Chofer=Entregas.Id_Chofer
GROUP BY
Fleteros.Id_Fletero,Fleteros.Nombre,Choferes.Id_Chofer,Chof
eres.Nombre,Convert(char(1),Embanques.Pagado)
,Convert(char(1),Entregas.Pagado),Entregas.Concepto
HAVING Choferes.Id_Chofer IN(9,10) AND Convert(char
(1),Embanques.Pagado)=0
AND Convert(char(1),Entregas.Pagado)=0 AND
Entregas.Concepto<>'SI'
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida