AYUDA subconsulta con count
Publicado por Ariel Setton (8 intervenciones) el 02/12/2005 21:28:24
Hola, estoy teniendo un inconveniente para hacer una subconsulta:
tengo registros que tienen 10 columnas (id, col1, col2, col3, col4....col10).
El objetivo de mi consulta es que :
a) la primera agregue hasta la octava columna, y que muestre solamente los campos que están repetidos (una vez agregados)
b) La segunda, que con esas columnas que se que están repetidas, que me muestre todos los campos de cada uno de esos registros (que pertenecen a la misma tabla de la primer consulta).
La primera consulta la resuelvo con
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1;
Se que funciona bien, porque sola funciona, pero al tomarla como subonculta, me devuelve todos los campos existentes en la tabla. Lo formé asi:
SELECT *
FROM tabla c1
WHERE EXISTS (
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1
);
Devuelve todos los campos!! Ocurre lo mismo con la siguiente consulta:
SELECT *
FROM tabla c1
WHERE c1.col1, c1.col2,...,c1.col8 IN
(
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1
);
Ayuda por favor!!
tengo registros que tienen 10 columnas (id, col1, col2, col3, col4....col10).
El objetivo de mi consulta es que :
a) la primera agregue hasta la octava columna, y que muestre solamente los campos que están repetidos (una vez agregados)
b) La segunda, que con esas columnas que se que están repetidas, que me muestre todos los campos de cada uno de esos registros (que pertenecen a la misma tabla de la primer consulta).
La primera consulta la resuelvo con
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1;
Se que funciona bien, porque sola funciona, pero al tomarla como subonculta, me devuelve todos los campos existentes en la tabla. Lo formé asi:
SELECT *
FROM tabla c1
WHERE EXISTS (
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1
);
Devuelve todos los campos!! Ocurre lo mismo con la siguiente consulta:
SELECT *
FROM tabla c1
WHERE c1.col1, c1.col2,...,c1.col8 IN
(
SELECT c2.col1, c2.col2,...,c2.col8
FROM tabla c2
GROUP BY c2.col1, c2.col2,...,c2.col8
HAVING count(*)>1
);
Ayuda por favor!!
Valora esta pregunta


0