Foros del Web » Programando para Internet » PHP »

Separar resultados de Inner Join

Estas en el tema de Separar resultados de Inner Join en el foro de PHP en Foros del Web. Muy buenas tardes foreros, espero que esto vaya acá. realicé una consulta en mysql usando inner join para unir los datos de dos tablas, lo ...
  #1 (permalink)  
Antiguo 23/03/2010, 16:34
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Pregunta Separar resultados de Inner Join

Muy buenas tardes foreros, espero que esto vaya acá.

realicé una consulta en mysql usando inner join para unir los datos de dos tablas, lo que no logro hacer es que los resultados se impriman en grupos según la condición del Join. me explico:
Código PHP:
Ver original
  1. <?
  2. $sql = mysql_query("SELECT T1.id, T1.valor AS campo, T2.idrel FROM (SELECT id, lang, valor FROM tabla1 WHERE lang='es') AS T1 INNER JOIN tabla2 AS T2 ON T1.id=T2.idrel");
  3.  while ($row = mysql_fetch_array($sql)) {
  4.   echo $row['campo'].'<br />';
  5.  }
  6. ?>
en este ejemplo el resultado sería una lista que cumpla la condición "T1.id=T2.idrel". Hasta ahí todo va bien, lo que sucede es que por ejemplo me gustaría insertar un "<hr />" cada vez que se haga una comprobación para un valor diferente de T1.id

Gracias de antemano y espero haber sido claro
__________________
AppLab - Laboratorio de Ideas
  #2 (permalink)  
Antiguo 23/03/2010, 16:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Separar resultados de Inner Join

En ese caso, almacena el id en una variable y luego comprueba si ese valor es diferente al proximo id, algo así
Código PHP:
Ver original
  1. $id = "";
  2. while ($row = mysql_fetch_array($sql)) {
  3.   echo ($id != $row["id"] ? "<hr />" : "");
  4.   echo $row['campo'].'<br />';
  5.   $id = $row["id"];
  6. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 23/03/2010, 17:01
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Separar resultados de Inner Join

Gracias abimaelrc funciona pero no entiendo porque al cambiar el "<hr />" por viñetas y teniendo una subconsulta interna no funciona de la misma manera.
Código PHP:
Ver original
  1. <?
  2. $sql = mysql_query("SELECT T1.id AS id, T1.valor AS campo, T2.idrel AS idrel FROM (SELECT id, lang, valor FROM tabla1 WHERE lang='es') AS T1 INNER JOIN tabla2 AS T2 ON T1.id=T2.idrel");
  3.  $id = "";
  4.  while ($row = mysql_fetch_array($sql)) {
  5.   echo ($id != $row["id"] ? '<ul class="vineta">' : "");     
  6.   echo '<li><a href="#">'.$row['campo'].'</a>';
  7.  
  8.   $sql_1 = mysql_query("SELECT * FROM tabla2 WHERE idrel='".$row['idrel']."' AND item!=''");
  9.    $num = mysql_num_rows($sql_1);
  10.    if ($num>0) {
  11.     echo '<ul class="vineta2">';
  12.     while ($row_1 = mysql_fetch_array($sql_1)) {echo '<li><a href="#">'.$row_1['item'].'</a></li>';}
  13.     echo '</ul>';
  14.    }
  15.   mysql_free_result($sql_1);
  16.  
  17.   echo '</li>';
  18.   echo ($id != $row["id"] ? '</ul>' : "");   
  19.   $id = $row["id"];
  20.  }
  21. ?>
cierra la viñeta antes de ejecutar la consulta interna
__________________
AppLab - Laboratorio de Ideas
  #4 (permalink)  
Antiguo 23/03/2010, 17:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Separar resultados de Inner Join

Mira como queda la estructura en el código fuente a ver que está haciendo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 23/03/2010, 17:13
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Separar resultados de Inner Join

lo que comento al final, cierra la viñeta antes de realizar la consulta interna

Código HTML:
Ver original
  1. <ul class="vineta">
  2.  <li><a href="#">Texto1</a></li>
  3. </ul>
  4. <ul class="vineta">
  5.  <li><a href="#">Texto2</a></li>
  6. </ul>
  7.  
  8. <!-- esto deberia estar dentro de la viñeta anterior -->
  9.  <li><a href="#">Texto3</a>
  10.   <ul class="vineta2">
  11.    <li><a href="#">Texto4</a></li>
  12.    <li><a href="#">Texto5</a></li>
  13.   </ul>
  14.  </li>
  15. <!-- esto deberia estar dentro de la viñeta anterior -->
  16. .
  17. .
  18. .
  19. .
__________________
AppLab - Laboratorio de Ideas
  #6 (permalink)  
Antiguo 23/03/2010, 17:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Separar resultados de Inner Join

En tu caso el problema es que el id es igual al anterior, por eso no coloca los <ul>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 24/03/2010, 09:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Separar resultados de Inner Join

bueno, aunque no es la solución ideal, reemplace las listas por saltos de línea y da la ilusión de lo que quiero mostrar.

muchas gracias
__________________
AppLab - Laboratorio de Ideas

Etiquetas: join, resultados
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 22:11.