Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/06/2016, 14:56
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: Select con SubSelect en MySql

Mira, si lo que necesitas es reemplazar esto:
Código MySQL:
Ver original
  1. (11519,11520,11521)
Por el resultado de una subconsulta, es totalmente innecesario, ineficiente, y absurdo (sin pretender ofender) que te lo devuelva como una lista separada por comas, porque si lo hiciese te lo devolvería como cadena de texto y NO como "valores" separados por comas. Eso NO EXISTE.
En esos casos lo que se hace es que devuelva el resultado directamente con un registro por cada valor, es MySQL el que luego resuelve esa condición IN().

¿Se entiende?
Tu consulta sería, entonces:
Código MySQL:
Ver original
  1.     h.idharas,
  2.     COUNT(idpersona) personas_involucradas,
  3.     (SELECT COUNT(hp.idpersona) pharas
  4.     FROM haras_personas hp
  5.     WHERE idharas = h.idharas) personas_haras
  6. FROM `haras_personas` h
  7. WHERE idpersona IN (select idpersona from xx where id=123456)
  8. GROUP BY idharas
  9. HAVING personas_involucradas = personas_haras AND personas_haras = 3

NO COMPLIQUES al SQL con acciones innecesarias. Primero usa las cláusulas tal y como se definieron en MySQL, y recién entonces empieza a expermientar cosas. VErás que en realidad es mucho más eficiente usar el IN() contra una subconsulta, que intentar crear un resultado en una cadena de texto, y tener que utilziar funciones de conversión para cadenas como GROUP_CONCAT() y FIND_IN_SET().
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)