SQL - consulta sql count >1

   
Vista:

consulta sql count >1

Publicado por fernando (3 intervenciones) el 22/01/2015 22:27:37
Estoy intentando sacar las personas que tienen al menos 2 estudios pero no me está haciendo bien la consulta, alguien me puede ayudar??

SELECT p.first_name FROM `directory`.person p, `directory`.study s where p.person_id = s.person_id having count(s.person_id) > 1;

gracias

un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

consulta sql count >1

Publicado por Isaias (690 intervenciones) el 23/01/2015 00:37:33
¿En que base de datos?

Prueba con:

SELECT p.first_name, count(s.person_id) FROM
directory.person p JOIN directory.study s
on p.person_id = s.person_id
WHERE HAVING COUNT(s.person_id) > 1
GROUP BY p.first_name
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

consulta sql count >1

Publicado por fernando (3 intervenciones) el 23/01/2015 17:19:18
Gracias por tu respuesta pero me falló como decía leonardo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta sql count >1

Publicado por leonardo_josue (878 intervenciones) el 23/01/2015 16:39:03
Tal como menciona Isaías, es muy importante que cuando abras un nuevo post, menciones siempre con qué motor de BD's estás trabajando, ya que hay diferencias sintácticas importantes en cada DBMS.

Comentar dos cosas que me parecen importantes, ya que Isaías cambia un poco tu consulta, pero creo que falta explicar el por qué lo hace:

Primero: No hagas JOIN's implícitos, es decir, no listes las tablas en el FROM separadas por comas, en lugar de eso utiliza siempre los JOIN's explícitos (NATURAL, INNER, LEFT, RIGTH según sea el caso).

En lugar de esto:

1
2
3
4
5
SELECT T1.campo1, T2.campo2 FROM T1, T2 WHERE T1.campo = T2.campo ...
 
haz esto
 
SELECT T1.campo1, T2.campo2 FROM T1 INNER JOIN T2 ON T1.campo = T2.campo ...

Aunque el resultado es el mismo, los JOIN's tienen un mejor performance...

Segundo: El estandar de SQL, indica que la sentencia HAVING debe colocarse después de la sentencia GROUP BY. otra forma de probar, distinta a la que te proporciona Isaías, sería así:

1
2
3
4
5
SELECT p.first_name
FROM directory.person p
INNER JOIN directory.study s ON p.person_id = s.person_id
GROUP BY p.first_name
HAVING COUNT(s.person_id) > 1

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

consulta sql count >1

Publicado por fernando (3 intervenciones) el 23/01/2015 17:18:27
gracias me dio el resultado que quería, probé la anterior consulta y, en efecto, daba error al poner el GROUP BY después.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar