Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Consulta con LEFT JOIN

Estas en el tema de Consulta con LEFT JOIN en el foro de Bases de Datos General en Foros del Web. Buenas! Tengo 2 tablas con esta estructura Tabla1 Nombre --> Nombre de la persona Mes --> Mes en que se recoge la llamada Año --> ...
  #1 (permalink)  
Antiguo 12/04/2007, 16:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 10 meses
Puntos: 0
Consulta con LEFT JOIN

Buenas!

Tengo 2 tablas con esta estructura

Tabla1

Nombre --> Nombre de la persona
Mes --> Mes en que se recoge la llamada
Año --> Año en que se recoge la llamada
Solucionado1 --> Llamadas en las que se soluciona a la 1ª el problema

Tabla2

Nombre --> Nombre de la persona
Mes --> Mes en que se recoge la llamada
Año --> Año en que se recoge la llamada
Solucionado --> Llamadas en las que se soluciona el problema no en la primera llamada

Quiero hacer una consulta que me devuelva los datos de ambas tablas juntas, agrupando por la persona que coge la llamada, mes y año.
Mediante un Left Join consigo que no se discriminen los datos nulos de la Tabla2, sin embargo cuando en la Tabla1 tengo 1 dato nulo no sé como hacer que salga también.

SELECT Tabla1.Nombre, Tabla1.Mes, Tabla1.Año, Tabla1.Solucionado1, Tabla2.Solucionado
FROM Tabla1 LEFT JOIN Tabla2 ON (Tabla2.Nombre=Tabla1.Nombre) AND (Tabla2.Mes=Tabla1.Mes) AND Tabla2.Año=Tabla1.Año);

Con esto consigo que aunque en la Tabla2 haya algún dato en Tabla.Solucionado que no contenga nada me los muestre todos, sin embargo como algun Tabla1.Solucionado1 no contenga valor no me lo muestra.

Yo quiero que me devuelva todos, estén en una u otra tabla valores nulos.

Gracias de antemano.
  #2 (permalink)  
Antiguo 13/04/2007, 09:46
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años, 8 meses
Puntos: 9
Re: Consulta con LEFT JOIN

¿Y eso no se podría haber hecho todo ello en una misma tabla? Me parece que tu abse de datos podría dar lugar a la ambiguedad de datos.
Saludos.
  #3 (permalink)  
Antiguo 13/04/2007, 11:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 13
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Consulta con LEFT JOIN

Bueno ya lo he sacado como quería.

Me expliqué mal, ya que realmente la BBDD está bien estructurada. El caso es que hay una consulta que devuelve los casos Solucionado1 y otra consulta que devuelve los casos Solucionado.

Luego para unirlos sin discriminar si una persona tiene o no casos nulos en Solucionado1 o Solucionado era lo que quería.

Al final con la consulta LEFT JOIN y UNION junto a otro LEFT JOIN lo tengo solucionado.

Un saludo y gracias.
  #4 (permalink)  
Antiguo 24/04/2007, 15:40
 
Fecha de Ingreso: abril-2007
Mensajes: 3
Antigüedad: 17 años, 8 meses
Puntos: 0
Sonrisa Re: Consulta con LEFT JOIN

El resumen es este

Declaración sencilla sin "JOIN":

SELECT Employees.Name, Orders.Product FROM Employees, Orders WHERE Employees.Employee_ID=Orders.Employee_ID

Con "INNER JOIN": retorna todos los campos que coinsidan. Pero, si hay filas en EMPLOYEES que no tengan coincidencias con ORDERS NO serán puestas.

SELECT Employees.Name, Orders.Product FROM Employees INNER JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID


Con "LEFT JOIN": retorna todos los campos que coinsidan. Pero, si hay filas en EMPLOYEES que no tengan coincidencias SI serán puestas.

SELECT Employees.Name, Orders.Product FROM Employees LEFT JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID

Con "RIGHT JOIN": retorna todos los campos que coinsidan. Pero, si hay filas en ORDERS que no tengan coincidencias SI serán puestas.

SELECT Employees.Name, Orders.Product FROM Employees RIGHT JOIN Orders ON Employees.Employee_ID=Orders.Employee_ID

Espero sea claro para que aprovechen al máximo las Bases de Datos... pero por ser nuevo por aqui no pude poner la url del sitio del que lo extrage...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:06.