Metodos alternativos de consulta
Bueno, tengo una duda a la hora de realizar algunas consultas.
EL caso es que tengo una consulta que me devuelve una seria de nombres, y quisiera de estos eliminar los que no esten repetidos en varias lineas.
seria:
dni
-----
1111
1111
2222
3333
3333
De esto solo me quisiera quedar con el 1 y el 3 que existen en varias tuplas.
Esto solo soy capaz de conseguirlo, trabajando con esta subconsulta como si fuese una tabla, es decir, desde el from. Pero no me parece una forma demasiado buena.
Os pego como queda mi consulta.
select dni, nom, cognoms
from espectadors
where dni in (
select dni_client
from (
select dni_client
from entrades
where data between '01/01/04' and '31/12/04'
group by dni_client, codi_espectacle
)
group by dni_client
having count(*)>1
)
Hay queda la duda. Espero respuestas. Gracias ;)
EL caso es que tengo una consulta que me devuelve una seria de nombres, y quisiera de estos eliminar los que no esten repetidos en varias lineas.
seria:
dni
-----
1111
1111
2222
3333
3333
De esto solo me quisiera quedar con el 1 y el 3 que existen en varias tuplas.
Esto solo soy capaz de conseguirlo, trabajando con esta subconsulta como si fuese una tabla, es decir, desde el from. Pero no me parece una forma demasiado buena.
Os pego como queda mi consulta.
select dni, nom, cognoms
from espectadors
where dni in (
select dni_client
from (
select dni_client
from entrades
where data between '01/01/04' and '31/12/04'
group by dni_client, codi_espectacle
)
group by dni_client
having count(*)>1
)
Hay queda la duda. Espero respuestas. Gracias ;)
Hola,
la verdad es que si los otros campos de la tabla espectadores no coinciden creo que tu soluciÓn es bastante acertada, aunque yo en vez de utilizar la clausula IN para enlazar la subquery emplearia directametne la clausula EXISTS que es mas rápida y "elegante":
:select dni, nom, cognoms from espectadors
where exists ( select dni_client, count(*)
from entrades
where data between ... and ...
group by dni_client
having count(*)>1
)
Ya me contarás si te ha funcionado.
Un saludo.
la verdad es que si los otros campos de la tabla espectadores no coinciden creo que tu soluciÓn es bastante acertada, aunque yo en vez de utilizar la clausula IN para enlazar la subquery emplearia directametne la clausula EXISTS que es mas rápida y "elegante":
:select dni, nom, cognoms from espectadors
where exists ( select dni_client, count(*)
from entrades
where data between ... and ...
group by dni_client
having count(*)>1
)
Ya me contarás si te ha funcionado.
Un saludo.