Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Select con SubSelect en MySql

Estas en el tema de Select con SubSelect en MySql en el foro de Bases de Datos General en Foros del Web. Buenas Tardes: Tengo la siguiente select: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT h . idharas , COUNT ( idpersona ) personas_involucradas , ( SELECT ...
  #1 (permalink)  
Antiguo 06/06/2016, 13:00
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Select con SubSelect en MySql

Buenas Tardes:

Tengo la siguiente select:
Código SQL:
Ver original
  1. SELECT h.idharas,COUNT(idpersona) personas_involucradas ,
  2. (SELECT COUNT(hp.idpersona) FROM haras_personas hp WHERE idharas = h.idharas) personas_haras
  3. FROM `haras_personas` h WHERE idpersona IN (11519,11520,11521)
  4.  GROUP BY idharas
  5. HAVING personas_involucradas = personas_haras AND personas_haras = 3

Necesitaría reemplazar donde dice 11519,11520,11521 por el resultado de otra subselect - select idpersona from xx where id=123456 pero no en filas sino que me de los valores separados por ',' como está arriba.

Creo que se entiende, Muchas Gracias por su ayuda!!

Última edición por gnzsoloyo; 06/06/2016 a las 14:08
  #2 (permalink)  
Antiguo 06/06/2016, 14:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Select con SubSelect en MySql

Cita:
pero no en filas sino que me de los valores separados por ',' como está arriba.
A ver si entiendo... ¿Tienes ese campo como VARCHAR con todos los valores separados por comas? ¿Es así?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/06/2016, 14:15
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Select con SubSelect en MySql

Una SELECT devuelve el resultado en filas, ejemplo:
CAMPO
12345
87218
23122

Yo necesitaría que devuelva así:
12345,87218,23122

Es posible??
  #4 (permalink)  
Antiguo 06/06/2016, 14:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
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)
  #5 (permalink)  
Antiguo 06/06/2016, 15:40
Usuario no validado
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires
Mensajes: 413
Antigüedad: 15 años
Puntos: 3
Respuesta: Select con SubSelect en MySql

Muchas Gracias, lo probé y funciona de las dos maneras.
Una brazo!!

Etiquetas: mysql, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:29.