Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Agrupar claves con sus respectivos valores

Estas en el tema de Agrupar claves con sus respectivos valores en el foro de PHP en Foros del Web. Buenas tardes . Bueno , estoy ya hace unos dias buscando e intentando pero no encuentro una solución . el problema es el siguiente , ...
  #1 (permalink)  
Antiguo 19/03/2014, 09:55
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Agrupar claves con sus respectivos valores

Buenas tardes .

Bueno , estoy ya hace unos dias buscando e intentando pero no encuentro una solución .

el problema es el siguiente , por ej , tengo 3 madres con sus respectivos hijos , juan, mario ,luis , raul, jose . etc

Maria =Juan
Lupita = mario, luis
Manola = raul, jose

tengo un while que hace que si la madre actual no es igual a la madre del registro que me los agrupe asi en el caso de lupita no me repita Lupita = Mario Lupita= Luis

el tema esta en que una vez agrupados , solo me muestra el hijo que corresponde a cada madre , pero solo el primer campo de cada uno : me explico ?
quedando
Maria = Juan
Lupita= Mario
Manola = Raul

mi código es el siguiente

$madreActual = 0;
while($reg=mysql_fetch_array($registros))

if ($madreActual != $reg['madre'])
{
$madreActual = $reg['madre'];

echo "<br>";
echo "<hr>";
echo "Padre : " .$reg['padre']. " <br> ";
echo "Madre : " .$reg['madre'] ;
echo "<br>";
echo"Hijos : " .$reg['id_hijos'];


}

Muchas gracias.
  #2 (permalink)  
Antiguo 19/03/2014, 10:06
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: Agrupar claves con sus respectivos valores

manda la consulta sql puedes que tengas un group by o un order by y estas bloqueando los registros manda el codigo para poder ayudarte

  #3 (permalink)  
Antiguo 19/03/2014, 10:10
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

como estas, gracias por responder , efectivamente tengo un ORDER BY , pero si lo saco me repite las madres . dejo el query

$registros=mysql_query("SELECT madre,padre,id_hijos FROM conejoshembra ORDER BY madre ASC " ,$conexion)or

Gracias
  #4 (permalink)  
Antiguo 19/03/2014, 10:15
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: Agrupar claves con sus respectivos valores

Prueba con eso
Código PHP:
Ver original
  1. SELECT madre,padre,id_hijos FROM conejoshembra GROUP BY madre

  #5 (permalink)  
Antiguo 19/03/2014, 10:19
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

si , agrupar me los agrupa perfectamente , el tema es que los demas hijos no me los lista , solo el primer valor a cada madre por ej

Maria = Juan
Lupita= Mario
Manola = Raul

y no

Maria =Juan
Lupita = mario, luis
Manola = raul, jose

Gracias!
  #6 (permalink)  
Antiguo 19/03/2014, 10:28
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: Agrupar claves con sus respectivos valores

y como estas discriminando que un hijo sea de tal madre o no ?? por algun id o por el nombre ??
  #7 (permalink)  
Antiguo 19/03/2014, 10:38
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Agrupar claves con sus respectivos valores

Prueba con GROUP BY madre, id_hijos

De todas formas, sin ver el código (y usa la herramienta de hihglight), es más que complicado adivinarlo
__________________
>> Eleazan's Source
>> @Eleazan
  #8 (permalink)  
Antiguo 19/03/2014, 10:43
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

Evolution claro si , el ejemplo que use es para que no sea dificil de entender ,
lo diferencio dependiendo con que nombre se registro en su momento .


Elezean , gracias , pero no hay resultado , sigue mostrando el primer campo correspondiente a la madre.

el codigo es el siguiente : (es como lo aplico yo )

$registros=mysql_query("SELECT madre,padre,id_gazapos FROM conejoshembra GROUP BY madre,id_gazapos " ,$conexion)or

die("Problemas en el select: ".mysql_error());

$madreActual = 0;

while($reg=mysql_fetch_array($registros))

if ($madreActual != $reg['madre'])
{
$madreActual = $reg['madre'];

echo "<br>";
echo "<hr>";
echo "Padre : " .$reg['padre']. " <br> ";
echo "Madre : " .$reg['madre'] ;
echo "<br>";
echo"Gazapos : " .$reg['id_gazapos'];

}
  #9 (permalink)  
Antiguo 19/03/2014, 10:47
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Agrupar claves con sus respectivos valores

Y si pones el while completo?

Q devuelve la consulta? :/
__________________
>> Eleazan's Source
>> @Eleazan
  #10 (permalink)  
Antiguo 19/03/2014, 10:50
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

exactamente lo q devuelve es esto . cuando por ej en madre 2 y 3 tiene mas de 1registro (Gazapos) y solo muestra el primer valor

Padre : A
Madre : 1
Gazapos : G1

Padre : A
Madre : 2
Gazapos : G2

Padre : A
Madre : 3
Gazapos : G3

Padre : A
Madre : 4
Gazapos : G6

Padre : A
Madre : 5
Gazapos : G7
  #11 (permalink)  
Antiguo 19/03/2014, 10:51
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: Agrupar claves con sus respectivos valores

me hiciste entrar a SQL Fiddle y me resulto lo que querias te mostrare lo que hice

Código MySQL:
Ver original
  1. CREATE TABLE madres
  2.     (
  3.      idmama bigint (13),
  4.      nombre varchar(30),
  5.      hijo varchar (30)
  6.      
  7.     );
  8.  
  9. INSERT INTO madres
  10. (id,idmama,nombre,hijo)
  11. ('1', '1','maria','samuel'),
  12. ('2', '2','lupita','benja'),
  13. ('3', '3','manola','bastian'),
  14. ('4', '1','maria','stone could'),
  15. ('5', '2','lupita','hhh'),
  16. ('6', '3','manola','the rock ')

la consulta
Código PHP:
Ver original
  1. SELECT * FROM madres order by nombre

y si me resulta lo que me pides

ID IDMAMA NOMBRE HIJO
2 2 lupita benja
5 2 lupita hhh
3 3 manola bastian
6 3 manola the rock
1 1 maria samuel
4 1 maria stone could
Record Count: 6; Execution Time: 1ms View Execution Plan link
  #12 (permalink)  
Antiguo 19/03/2014, 10:57
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

Gracias a todos por sus respuestas ,
Evo , habia realizado eso que dices , pero lo que no logro es meter en ID mama por ej a benja y hhhh , para que no se repita el Id mama y me agrupe sus hijos en cada ID mama

Graciass!!
  #13 (permalink)  
Antiguo 19/03/2014, 10:57
Avatar de 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
Puntos: 2658
Respuesta: Agrupar claves con sus respectivos valores

Hay que usar funciones. No todo es simples SELECT...
Código MySQL:
Ver original
  1. SELECT nombre, GROUP_CONCAT(hijo) hijos
  2. FROM madres
  3. GROUP BY nombre
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 19/03/2014, 11:04
 
Fecha de Ingreso: septiembre-2013
Mensajes: 15
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Agrupar claves con sus respectivos valores

gnzsoloyo , me dio resultado !!

Muchas gracias a todos , por su tiempo y dedicacion a mi problema !.

Etiquetas: agrupar, claves, registro, sql
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 11:10.