Duda en consulta a 3 tablas
Publicado por Alfonso (5 intervenciones) el 01/02/2007 20:30:48
Hola!
Perdonad si me he expandido demasiado explicando. Tengo 3 tablas, cuyos campos son, resumiendo:
----------
conciertos
----------
id_concierto
titular
descripción
----------
citas
----------
id_cita
fecha
----------
conciertos_citas
----------
id_concierto
id_cita
Un concierto puede tener muchas citas, y a su vez, una cita puede hacer referencia a muchos conciertos, por eso la estructura la hice así:
conciertos(id_concierto) --> conciertos_citas <-- citas(id_cita)
La tabla que establece la relación entre citas y conciertos, es "conciertos_citas".
El cliente me pide un listado de conciertos del mes de noviembre, ordenados cronológicamente según la fecha de su primera cita.
Lo que necesito por tanto, es hacer un listado de los titulares de conciertos, ordenados por la fecha de la cita que tengan asociada. Quedaría así:
Titular concierto 1
Fechas: 10 de nov, 12 de nov y 23 de nov -> este concierto debe aparecer el primero porque su primera cita es el 10 de nov, que es la menor de cualquiera de las citas de los otros conciertos.
Titular concierto 2
Fechas: 11 de nov, 12 de nov y 16 de nov -> este concierto es el segundo del listado porque su primera cita, el 11 de nov, mayor que la primera cita del primer concierto (10 de nov)
Titular concierto 3
Fechas: 15 de nov, 21 de nov y 22 de nov -> su primera cita es el 15 de nov, por lo que iría en tercera posición.
Pero hasta ahora lo único que he conseguido es que se muestre el listado de conciertos, pero desordenado cronológicamente:
Titular concierto 3
Fechas: 15 de nov, 21 de nov y 22 de nov
Titular concierto 1
Fechas: 10 de nov, 12 de nov y 23 de nov
Titular concierto 2
Fechas: 11 de nov, 12 de nov y 16 de nov
Esto lo he conseguido con la siguiente sentencia SQL:
SELECT * FROM conciertos
WHERE EXISTS (
SELECT * FROM conciertos_citas
WHERE conciertos_citas.id_concierto = conciertos.id_concierto
GROUP BY conciertos_citas.id_concierto
)
¿Cómo puedo hacer para que el listado de conciertos se me ordene según la fecha de sus citas?
Uso SQL Server. Me hacéis un mundo si alguien supiera contestarme. Muchas gracias y un saludo,
Alfonso.
Perdonad si me he expandido demasiado explicando. Tengo 3 tablas, cuyos campos son, resumiendo:
----------
conciertos
----------
id_concierto
titular
descripción
----------
citas
----------
id_cita
fecha
----------
conciertos_citas
----------
id_concierto
id_cita
Un concierto puede tener muchas citas, y a su vez, una cita puede hacer referencia a muchos conciertos, por eso la estructura la hice así:
conciertos(id_concierto) --> conciertos_citas <-- citas(id_cita)
La tabla que establece la relación entre citas y conciertos, es "conciertos_citas".
El cliente me pide un listado de conciertos del mes de noviembre, ordenados cronológicamente según la fecha de su primera cita.
Lo que necesito por tanto, es hacer un listado de los titulares de conciertos, ordenados por la fecha de la cita que tengan asociada. Quedaría así:
Titular concierto 1
Fechas: 10 de nov, 12 de nov y 23 de nov -> este concierto debe aparecer el primero porque su primera cita es el 10 de nov, que es la menor de cualquiera de las citas de los otros conciertos.
Titular concierto 2
Fechas: 11 de nov, 12 de nov y 16 de nov -> este concierto es el segundo del listado porque su primera cita, el 11 de nov, mayor que la primera cita del primer concierto (10 de nov)
Titular concierto 3
Fechas: 15 de nov, 21 de nov y 22 de nov -> su primera cita es el 15 de nov, por lo que iría en tercera posición.
Pero hasta ahora lo único que he conseguido es que se muestre el listado de conciertos, pero desordenado cronológicamente:
Titular concierto 3
Fechas: 15 de nov, 21 de nov y 22 de nov
Titular concierto 1
Fechas: 10 de nov, 12 de nov y 23 de nov
Titular concierto 2
Fechas: 11 de nov, 12 de nov y 16 de nov
Esto lo he conseguido con la siguiente sentencia SQL:
SELECT * FROM conciertos
WHERE EXISTS (
SELECT * FROM conciertos_citas
WHERE conciertos_citas.id_concierto = conciertos.id_concierto
GROUP BY conciertos_citas.id_concierto
)
¿Cómo puedo hacer para que el listado de conciertos se me ordene según la fecha de sus citas?
Uso SQL Server. Me hacéis un mundo si alguien supiera contestarme. Muchas gracias y un saludo,
Alfonso.
Valora esta pregunta


0