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

Consulta MySQL con NULL incluidos

Estas en el tema de Consulta MySQL con NULL incluidos en el foro de Mysql en Foros del Web. Buenas Tardes, tengo una duda dudosa y estoy mareado. Tengo tres tablas: - Personas: Código: ID NOMBRE 1 Pedro 2 Juan 3 Luis 4 Mario ...
  #1 (permalink)  
Antiguo 26/10/2012, 11:08
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años, 5 meses
Puntos: 79
Consulta MySQL con NULL incluidos

Buenas Tardes, tengo una duda dudosa y estoy mareado.

Tengo tres tablas:
- Personas:
Código:
ID	NOMBRE
1	Pedro
2	Juan
3	Luis
4	Mario
- areas:
Código:
ID	AREA
1	AUTOS
2	CAMIONETAS
3	MOTOS
- asignaciones:
Código:
ID	ID_PERSONA	ID_AREA
1	1		1
2	2		1
3	2		2
Estructura de las tablas:


ID en todas las tablas es un campo auto numérico, la tabla asignaciones captura que persona y que áreas tiene asignadas, si trabaja con uno, dos o tres áreas, no se repiten.

Si se fijan en la tablas asignaciones tengo en ID_PERSONA a Juan dos veces, porque se le asignaron el área 1 (AUTOS) y el 2 (CAMIONETAS).

Sucede que quiero hacer una query, donde pueda cruzar la tabla areas con las asignaciones, si hago el JOIN con la persona 2 (JUAN), me va a mostrar dos resultados.

el de AUTOS y el de CAMIONETAS, pero quiero además que me salga el de MOTOS, pero indicando que es NULL porque el cruce no arroja nada.

¿Como sería la consulta?

como ejemplo, si hago esto:
Código:
SELECT * FROM areas AS a 
LEFT JOIN asignaciones AS b ON a.ID=b.ID_PERSONA 
WHERE b.ID_PERSONA=2
me arroja dos registros, pero quiero tener los 3 que salen en area he indicando que el de MOTOS tiene valores NULL


Agradezco cualquier aporte.

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #2 (permalink)  
Antiguo 26/10/2012, 15:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: Consulta MySQL con NULL incluidos

Hola Perr0:

Por un lado tienes un error en la condición ON, ya que las tablas AREAS y ASIGNACIONES no están ligadas por el campo ID_PERSONA, sino por el campo ID_AREA

Prueba así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM areas;
  2. +------+------------+
  3. | ID   | AREA       |
  4. +------+------------+
  5. |    1 | AUTOS      |
  6. |    2 | CAMIONETAS |
  7. |    3 | MOTOS      |
  8. +------+------------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> SELECT * FROM asignaciones;
  12. +------+------------+---------+
  13. | ID   | ID_PERSONA | ID_AREA |
  14. +------+------------+---------+
  15. |    1 |          1 |       1 |
  16. |    2 |          2 |       1 |
  17. |    3 |          2 |       2 |
  18. +------+------------+---------+
  19. 3 rows in set (0.00 sec)
  20.  
  21. mysql> SELECT *
  22.     -> FROM areas a
  23.     -> LEFT JOIN asignaciones b
  24.     -> ON a.ID = b.ID_AREA AND b.ID_PERSONA = 2;
  25. +------+------------+------+------------+---------+
  26. | ID   | AREA       | ID   | ID_PERSONA | ID_AREA |
  27. +------+------------+------+------------+---------+
  28. |    1 | AUTOS      |    2 |          2 |       1 |
  29. |    2 | CAMIONETAS |    3 |          2 |       2 |
  30. |    3 | MOTOS      | NULL |       NULL |    NULL |
  31. +------+------------+------+------------+---------+
  32. 3 rows in set (0.00 sec)

Saludos
Leo.
  #3 (permalink)  
Antiguo 29/10/2012, 05:23
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años, 5 meses
Puntos: 79
Respuesta: Consulta MySQL con NULL incluidos

Muchas gracias leonardo_josue, me fue muy útil tu información, la acabo de ver y toda la razón, gracias por las molestias.

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip

Etiquetas: join, null, registros, select, tabla, campos
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




La zona horaria es GMT -6. Ahora son las 21:33.