Foros del Web » Programando para Internet » PHP »

Como poder lograr esta subconsultas en mysql..

Estas en el tema de Como poder lograr esta subconsultas en mysql.. en el foro de PHP en Foros del Web. Buenos dias habia comentado en otro foro sobre este problema ya masomenos he ido avanzadolo pero ahora si estoy estancado.. habia explicado anteriormente que tengo ...
  #1 (permalink)  
Antiguo 01/03/2016, 11:06
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Mensaje Como poder lograr esta subconsultas en mysql..

Buenos dias habia comentado en otro foro sobre este problema ya masomenos he ido avanzadolo pero ahora si estoy estancado.. habia explicado anteriormente que tengo 2 tablas una tabla llamada padre y otra tabla llamada hijo... la tabla hijo se relaciona con la de padre.. en resumen un padre tiene varios hijos y varios hijos un solo padre.. que pasa quiero hacer hacer una consulta donde pueda traer los ultimos 5 hijos registrados de cada padre... pero solo logro traer todos los los hijos de cada padre.. aqui les dejo la consulta y las tablas

Trate usandoun TOP pero

consulta
Código MySQL:
Ver original
  1. select count(hijo.id_padre) as conteo, padre.nombre
  2. from padre inner join hijo on
  3. padre.id = hijo.id_padre
  4. GROUP BY padre.nombre;

tablas
Código MySQL:
Ver original
  1. CREATE TABLE `familia`.`padre` (
  2.   `nombre` VARCHAR(45) NULL COMMENT '',
  3.   PRIMARY KEY (`id`)  COMMENT '');
  4.  
  5. insert into padre(nombre)values('juan');
  6. insert into padre(nombre)values('ramon');
  7. insert into padre(nombre)values('pedro');
  8. insert into padre(nombre)values('julio');
  9. insert into padre(nombre)values('rigobert');
  10. insert into padre(nombre)values('les');
  11.  
  12.  
  13. CREATE TABLE `familia`.`hijo` (
  14.   `nombre` VARCHAR(45) NULL COMMENT '',
  15.   `fecha` VARCHAR(45) NULL COMMENT '',
  16.   `id_padre` INT NULL COMMENT '',
  17.   PRIMARY KEY (`id`)  COMMENT '');
  18.  
  19. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  20. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),6);
  21. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),1);
  22. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  23. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  24. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  25. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  26. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),2);
  27. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),3);
  28. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),3);
  29. insert into hijo(nombre,fecha,id_padre)values('pedro',now(),4);
  #2 (permalink)  
Antiguo 01/03/2016, 11:48
 
Fecha de Ingreso: septiembre-2014
Mensajes: 79
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Como poder lograr esta subconsultas en mysql..

Hola, hablas del LIMIT 5 en la consulta ?
  #3 (permalink)  
Antiguo 01/03/2016, 11:51
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como poder lograr esta subconsultas en mysql..

cuando me dicen de poner LIMIT 5 en la consulta se me limita a los ultimos 5 registros de la tabla completa me traeria a los ultimos 5 padres con todos los hijos
  #4 (permalink)  
Antiguo 01/03/2016, 11:58
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, 4 meses
Puntos: 2658
Respuesta: Como poder lograr esta subconsultas en mysql..

Este es un tema para el foro de MySQL, no para PHP.

Cita:
Trate usandoun TOP pero
No existe el TOP en MySQL.

Cita:
quiero hacer hacer una consulta donde pueda traer los ultimos 5 hijos registrados de cada padre
En MySQL existen al menos dos tipos de solución para lograr eso.
__________________
¿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 01/03/2016, 12:00
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como poder lograr esta subconsultas en mysql..

la consulta la hare desde php pasandole variables ... pero les pegue las tablas mysql por quien quiera probar
  #6 (permalink)  
Antiguo 01/03/2016, 12:03
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, 4 meses
Puntos: 2658
Respuesta: Como poder lograr esta subconsultas en mysql..

La consulta la haces desde PHP, pero la consulta es SQL y se ejecuta en MySQL.

No te olvides que MySQL no entiende ni interpreta PHP... Y como ya te dije, en MySQL hay más de una forma de hacerlo, mientras que desde PHP solo puedes recuperar la tabla entera con todos los resultados y procesarlos a fuerza bruta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/03/2016, 12:07
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como poder lograr esta subconsultas en mysql..

disculpa no habia visto que editas el comentario.. segun leo hasta el momenot una solucion para hcaerlo es con una subconsulta en la cual no me va nada bien no se si el otro metodo que mencionas no necesito usar una subconsulta....
  #8 (permalink)  
Antiguo 01/03/2016, 12:44
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como poder lograr esta subconsultas en mysql..

Ya estoy casi cerca creo tengo esta consulta pero el unico detalle es que me trae si a todos los padres pero con el total de todos los hiojs en la tabla

Código MySQL:
Ver original
  1. select padre.nombre,
  2. (
  3. select count(hijo.id_padre) from hijo order by id_padre
  4. )
  5. as conteo from hijo inner join padre on
  6. padre.id = hijo.id
  7. GROUP BY padre.nombre;
  #9 (permalink)  
Antiguo 01/03/2016, 13:03
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, 4 meses
Puntos: 2658
Respuesta: Como poder lograr esta subconsultas en mysql..

Es que precisamente no es una simple consulta, o una subconsulta lo que te va a devolver lo que pides.
Lo que tu quieres es que te devuelva un máximo de cinco hijos por cada uno de los últimos padres, y eso no hay query que lo pueda diferenciar. Hay que fabricar una respuesta a la consulta que peuda identificar el numero de hijo de cada padre, dado que no lo tienes en la tabla.
Por otro lado, tampoco tienes un campo que permita saber cuáles son los "últimos" padres.

Por cierto, ¿sabías que a nivel arquitectura de datos, una relación padre-hijos sólo requiere una sola tabla?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 01/03/2016, 13:11
 
Fecha de Ingreso: mayo-2012
Mensajes: 117
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como poder lograr esta subconsultas en mysql..

Porque una sola tabla? si un padre podria tener 50 hijos.. significaria que en una tabla el nombre del padre se repetiria hasta 50 veces o no te entendi bien....
  #11 (permalink)  
Antiguo 01/03/2016, 14:22
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, 4 meses
Puntos: 2658
Respuesta: Como poder lograr esta subconsultas en mysql..



No. La tabla de la persona tiene una FK nulable que apunta a a si misma, es decir a su padre. De esa forma se hace un JOIN de una tabla consigo misma. Al ser nulable, el padre no tiene padre, y allí termina la relación...
No estoy inventando nada. Es exactamente el mismo esquema que se usa para determinar quien es el jefe de una tabla Empleados, y es un modelo universal.

Así de simple...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, query
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 17:51.