Foros del Web » Programando para Internet » PHP »

Resultados + inner join

Estas en el tema de Resultados + inner join en el foro de PHP en Foros del Web. Saludos a todos! Quisiera saber si existe alguna opcion para simplificar lo siguiente: Tengo una consulta con inner join que por el momento solo visita ...
  #1 (permalink)  
Antiguo 18/09/2008, 06:50
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 9 meses
Puntos: 5
Pregunta Resultados + inner join

Saludos a todos!

Quisiera saber si existe alguna opcion para simplificar lo siguiente:

Tengo una consulta con inner join que por el momento solo visita 2 tablas, digo por el momento porque quizas necesite agregar otras tablas a esa consulta. El asunto es que quiero mostrar de 1 tabla los datos del producto, y de la otra los diferentes precios y caracteristicas variantes del mismo. La consulta es algo como esto:
Código:
select products.*, prices.* from products inner join prices on products.proid=prices.proid where product.proid=101
Entonces esto me muestra algo como esto:
Producto: Taladro de Mano Black & Decker
  1. Color: Amarillo Precio:952
  2. Color: Rojo: Precio:960
  3. Color: Verde Precio:999
En donde Producto viene de la tabla products y los colores y precios de la tabla prices.

Lo resolvi asignando los valores que me interesan a Arrays, pero me gustaria saber si hay una forma mas sencilla de acceder a esos datos sin la necesidad de crear nuevas variables.

Saludos de nuevo y gracias de antemano.
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #2 (permalink)  
Antiguo 18/09/2008, 13:56
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Resultados + inner join

Nadie tiene idea, no se entiende la pregunta o simplemente no se puede?
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #3 (permalink)  
Antiguo 19/09/2008, 07:47
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Resultados + inner join

De hecho, en ningún momento estás diciendo cuál es la pregunta.
  #4 (permalink)  
Antiguo 19/09/2008, 09:55
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Resultados + inner join

Cita:
Iniciado por messer Ver Mensaje
pero me gustaria saber si hay una forma mas sencilla de acceder a esos datos sin la necesidad de crear nuevas variables
Aqui esta el asunto, es esto lo que quiero.
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #5 (permalink)  
Antiguo 19/09/2008, 10:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Resultados + inner join

Pero el asunto es que ya tenés eso mismo si la consulta es correcta, y en ningún momento estás mencionando que la consulta no funcione.

Si en tu tabla `products` tenés un campo "color", y en la tabla `prices` tenés un campo "precio", un registro devuelto por esa consulta contendría ambos campos, por lo que no entiendo la necesidad de crear nuevas variables o usar otra forma.

Pegá algo más de código, porque sinceramente creo que te estás ahogando en un vaso de agua.

Saludos.
  #6 (permalink)  
Antiguo 19/09/2008, 13:00
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Resultados + inner join

A ver creo que no nos estamos entendiendo bien.. si hago esa consulta de ese modo eso me arrojaria:

Taladro de mano amarillo 952
Taladro de mano rojo 960
Taladro de mano verde 999

obviamente se mostraran los registros con un ciclo ya sea while, for, etc pero no quiero que se repita el nombre del producto, en este caso, en el caso real son muchas mas caracteristicas las que no quiero que se repitan; entonces esto lo estoy trabajando con mysql_fetch_assoc, es alli donde viene mi duda, no se por que se me ocurrio acceder a los datos $row['Precio'] (que se repite) de la siguiente manera: $row['Precio'][0] $row['Precio'][1]$row['Precio'][2] Pero eso no funciona.
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #7 (permalink)  
Antiguo 19/09/2008, 13:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Resultados + inner join

Hola messer,

Esa es la logica que tu como programador debes de implementar, el motor de MySQL no va a hacer todo por ti, por eso tu debes como programador ajustar esa logica, la idea es que tengas un "puntero" de cual es el ultimo producto mostrado, y vas dibujando las filas de color / precio, por cada "vuelta" del ciclo checas tu puntero, si sigue siendo el mismo producto lo dejas igual hasta que el producto sea diferente entonces imprimes la fila nuevamente.

Un ejemplo:
Código php:
Ver original
  1. $previousProduct = '';
  2. while( $row = mysql_fetch_array($result)) {
  3.       if( $row['producto'] != $previousProduct ) {
  4.               echo $row['producto'] . "<br />";
  5.               $previousProduct = $row['producto'];
  6.       }
  7.  
  8.       printf( "Color %s, precio %s", $row['color'], $row['precio'] );
  9. }

Saludos.
  #8 (permalink)  
Antiguo 19/09/2008, 13:50
Avatar de messer  
Fecha de Ingreso: julio-2004
Mensajes: 467
Antigüedad: 19 años, 9 meses
Puntos: 5
Respuesta: Resultados + inner join

A ver les he enredado un poco me parece:

Código PHP:
<?php
          $sql 
"select productos.*,precios.* from productos inner join precios on productos.idPro=precios.idPro where productos.idPro=".$dx;
         
$result mysql_query($sql$cn);
         
$num_results mysql_num_rows($result);
         for(
$i=0$i<$num_results$i++){
         
$row mysql_fetch_assoc($result);
         
$color[$i]=$row["color"];        //  <---
         
$precio[$i]=$row["precio"];    //  <---
              
}
        
?>
Asi lo tengo actualmente y he conseguido el resultado que deseo. Pero me gustaria hacerlo sin tener que recurrir a nuevas variables, en este caso los arreglos marcados con flechas ($color y $precio). Eso lo despliego en una tabla, en esta pag se mostrara solo 1 producto a la vez, con sus diferentes caracteristicas y precios.

Nombre Producto: Taladro de Mano Black & Decker
__________________________________________________ ___________
Disponibilidad: 100 | Color: Azul | Medidas: Small | Precio: Us$50.00
__________________________________________________ ___________
Disponibilidad: 10 | Color: Rojo | Medidas: Medium | Precio: Us$70.00
__________________________________________________ ___________
Disponibilidad: 33 | Color: Verde | Medidas: Large | Precio: Us$90.00

La tecnica que describe GatorV tambien lograria algo similar, pero es posible acceder directo con PHP a la informacion tal y como se haria con una matriz $matriz[1,0,2] pero utilizando mysql_fetch_assoc ya que no se maneja con numeros sino con los nombres de los campos?
__________________
<script type="text/messerScript"><!--
window.onload=function(){ loadMesserRules(this.href) }
--></script>
  #9 (permalink)  
Antiguo 19/09/2008, 13:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Resultados + inner join

Es facil crear una matriz, recuerda que puedas agregar un arreglo a un arreglo:
Código php:
Ver original
  1. $matriz = array();
  2. $matriz[0] = array();
  3. $matriz[0][0] = array();
  4. $matriz[0][0][0] = "foo";
  5. $matriz[0][0][1] = "bar";
  6. $matriz[0][1][0] = "baz";
  7. $matriz[0][1][1] = "daz";
  8. $matriz[1] = array();
  9. $matriz[1][0] = array();
  10. $matriz[1][0][0] = "other";
  11.  
  12. var_dump($matriz);

Saludos.
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:42.