Left Join

01/02/2006 - 19:17 por Penta | Informe spam
Estimados.
Tengo 3 tablas
Nombre Registros
Tabla1 100
Tabla2 150
Tabla3 500

Pues bien Necesito hacer un left join de Tabla1
Y Obtener los mismos 100 registros

Lo que tengo es:

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo -- hasta aqui todo bien me da 100 registros

Pero
Si le agrego
Left Join Tabla3 C
On A.Codigo=C.codigo -- Aca se desarma todo me da como 120 registros

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo
Left Join Tabla3 C
On A.Codigo=C.codigo

Que estoy haciendo mal ?

Gracias.

Preguntas similare

Leer las respuestas

#1 Isaias
01/02/2006 - 20:17 | Informe spam
El primer LEFT JOIN, es correcto, en el segundo, debes colocar FULL JOIN,
para que los registros de TABLA3 de no existir, salgan en NULL.

Saludos
IIslas


"Penta" escribió:

Estimados.
Tengo 3 tablas
Nombre Registros
Tabla1 100
Tabla2 150
Tabla3 500

Pues bien Necesito hacer un left join de Tabla1
Y Obtener los mismos 100 registros

Lo que tengo es:

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo -- hasta aqui todo bien me da 100 registros

Pero
Si le agrego
Left Join Tabla3 C
On A.Codigo=C.codigo -- Aca se desarma todo me da como 120 registros

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo
Left Join Tabla3 C
On A.Codigo=C.codigo

Que estoy haciendo mal ?

Gracias.


Respuesta Responder a este mensaje
#2 Alejandro Mesa
01/02/2006 - 20:19 | Informe spam
Penta,

No estas haciendo nada mal, solo que en tabla3 tienes filas con codigo
repetido las cuales al hacer join con tabla1 hacen que en vez de 100 el
resultado contenga 120 filas.

Chequea el resultado de:

select codigo, count(*)
from tabla3
group by codigo
having count(*) > 1


AMB

"Penta" wrote:

Estimados.
Tengo 3 tablas
Nombre Registros
Tabla1 100
Tabla2 150
Tabla3 500

Pues bien Necesito hacer un left join de Tabla1
Y Obtener los mismos 100 registros

Lo que tengo es:

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo -- hasta aqui todo bien me da 100 registros

Pero
Si le agrego
Left Join Tabla3 C
On A.Codigo=C.codigo -- Aca se desarma todo me da como 120 registros

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo
Left Join Tabla3 C
On A.Codigo=C.codigo

Que estoy haciendo mal ?

Gracias.


Respuesta Responder a este mensaje
#3 Penta
01/02/2006 - 21:35 | Informe spam
Efectivamente es ese el problema, por lo tanto tendria que encontrar el
campo que lo hace unico en la tabla3 y aplicar un Where no ?
algo asi ?

Select * from Tabla1 A Left Join Tabla2 B
On A.Codigo=B.Codigo
Left Join Tabla3 C
On A.Codigo=C.codigo
Where c.campounico ÚTO

Gracias.
Respuesta Responder a este mensaje
#4 Penta
01/02/2006 - 21:47 | Informe spam
Isaias.
Hice la prueba con eso del FULL JOIN pero solo con left me trae de
todas maneras los datos que esten en A y no esten en C,

Alguien me echa una mano con eso del FULL JOIN por favor.

Gracias
Respuesta Responder a este mensaje
#5 Manuel Vera
01/02/2006 - 22:16 | Informe spam
Necesitas hacer "select *" ?
Probaste con hacer "select A.*" ?
Probaste colocando en el select solo las columnas que realmente necesitas
recueprar ?

MV

"Penta" escribió en el mensaje
news:
Isaias.
Hice la prueba con eso del FULL JOIN pero solo con left me trae de
todas maneras los datos que esten en A y no esten en C,

Alguien me echa una mano con eso del FULL JOIN por favor.

Gracias

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida