Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/10/2009, 04:40
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Complicacion con un select

Si el error es el que supones, pero tienes otro de fondo.

Para normalizar la bbdd te falta una tabla...!!!

La relación entre PRESENTACIONES y AREAS és muchos a muchos, n a n, cada presentación se puede presentar n areas y cada area puede recibir n presentaciones... luego la estructura es la siguiente


PRESENTACIONES
- id
- nombre

SESIONES
- presentacion_id
- area_id
- fecha


AREAS
- id
- nombre

TRABAJOS
- id
- nombre
- area_id

La nueva tabla SESIONES recoge el id de la presentación y el id de area de manera que puedes representar la relación n a n. He puesto un campo Fecha puesto que creo que podria ser relvante y para demostrar que crear la nueva tabla además nos permite guardar una información que antes no podiamos guardar....


Si tienes esta estructura tu consulta se resuelve facil....

Código sql:
Ver original
  1. SELECT tr.id, tr.nombre
  2. FROM trabajos tr
  3.              LEFT JOIN SESIONES ses
  4.                       ON tr.area_id=ses.area_id
  5. WHERE ses.presentacion_id=1


PRESENTACIONES
[1] [Presentacion Prueba]

SESIONES
[1][1][2009-09-24]
[1][2][2009-09-25]


AREAS
[1] [AREA UNO]
[2] [AREA DOS]
[3] [AREA TRES]

TRABAJOS
[1] [TRABAJO UNO] [1]
[2] [TRABAJO DOS] [2]
[3] [TRABAJO TRES] [3]

trabajos tr LEFT JOIN SESIONES ses ON tr.area_id=ses.area_id
[1] [TRABAJO UNO] [1][1][1][2009-09-24]
[2] [TRABAJO DOS] [2][1][2][2009-09-25]
[3] [TRABAJO TRES] [3][null][null][null]


WHERE ses.presentacion_id=1

[1] [TRABAJO UNO] [1][1][1][2009-09-24]
[2] [TRABAJO DOS] [2][1][2][2009-09-25]


SELECT tr.id, tr.nombre

[1] [TRABAJO UNO]
[2] [TRABAJO DOS]

Si?

Quim