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

Me podrian ayudar con esta query? (EL REGRESO :p)

Estas en el tema de Me podrian ayudar con esta query? (EL REGRESO :p) en el foro de Bases de Datos General en Foros del Web. Bueno, como todo lo que hago yo esto no iba a ser facil. Para los que no vieron la primera parte de este drama la ...
  #1 (permalink)  
Antiguo 26/10/2004, 18:32
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Me podrian ayudar con esta query? (EL REGRESO :p)

Bueno, como todo lo que hago yo esto no iba a ser facil.
Para los que no vieron la primera parte de este drama la cosa es asi
Tengo que hacer una consulta que busque dentro de varias tablas los registros correspondientes al cliente que ingresa al sitio.
Tengo la tabla pedido que guarda el idpedido, la fecha y que cliente lo hizo
La tabla detalle guarda el iddetallepedido, idpedido (mismo que en la tabla pedido), productos que pidio el cliente, cantidad y total.
La consulta me parecia ser facil. Deberia buscar dentro de pedido cuales les corresponden al cliente que ingreso al sitio, almacenar esos idpedido y buscar dentro de detalla que registros tienen ese idpedido y mostrarlos.
Al final no resulto tan facil y pedi ayuda y el estimado jmaribau me paso una sentencia sql me iba a servir para eso, que es:
Código PHP:
$sql 'select * from pedido as p, detalle as d, productos as pr where p.idcliente=1 and d.iddetallepedido = p.idpedido and d.idproducto = pr.idproducto';
$query mysql_query($sql);
while (
$row mysql_fetch_assoc($query))
{
echo (
'<pre>');
print_r($row);
echo (
'</pre>');

Como mi diminuto cerebro no podia comprender esto lo "traduje" a mysql y el resultado fue este:
Código PHP:
$result mysql_query ("select * from pedido as p, detalle as d, productos as pr where p.idcliente='$ncliente' and p.idpedido = d.iddetallepedido and d.idproducto = pr.idproducto");
$numeroRegistros=mysql_num_rows($result);
echo (
"<br><font alig='center' class='Titulo'> Se encontraron $numeroRegistros pedidos de este cliente<p>");
while(
$r=mysql_fetch_assoc($result))
{    
  
   
$IdCliente=$r["IdCliente"];
   
$IdPedido=$r["IdPedido"];
   
$PedidoFecha=$r["Fecha"];
   
$IdDetallePedido=$r["IdDetallePedido"];
   
$IdProducto=$r["IdProducto"];
   
$Cantidad=$r["Cantidad"];
   
$ProductoNombre=$r["Producto"];
   
$ProductoImporte=$r["Importe"];
   
$TotalProducto $ProductoImporte*$Cantidad;

echo 
"<table width='100%'  border='0' cellspacing='0' cellpadding='0'>\n";
    echo 
"<tr>\n";
      echo 
"<td width='7%'>$IdCliente</td>\n";
      echo 
"<td width='7%'>$IdPedido</td>\n";
      echo 
"<td width='12%'>$IdDetallePedido</td>\n";
      echo 
"<td width='5%'>$PedidoFecha</td>\n";
      echo 
"<td width='40%'>$ProductoNombre</td>\n";
      echo 
"<td width='14%'><div align='center'>$Cantidad</div></td>\n";
      echo 
"<td width='13%'><div align='center'>$ProductoImporte</div></td>\n";
      echo 
"<td width='9%'><div align='center'>$TotalProducto</div></td>\n";
    echo 
"</tr>\n";
  echo 
"</table>\n";

El resultado en ambos casos es el mismo (deberia ¿no?) pero por motivos que desconozco tiene un error.
La cantidad de registros que resultan de esta busqueda es correcta, o sea, si el cliente 1 tiene 117 pedidos me muestra 117 registros pero no son correctos esos registros que muestra.
Alguno sabe que puede llegar a ser? u otra forma de hacer esta locura?

Muchas gracias por la paciencia!!
  #2 (permalink)  
Antiguo 26/10/2004, 18:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 203
Antigüedad: 20 años, 8 meses
Puntos: 0
Por lo que entendi para mi tenes un error
$result = mysql_query ("select * from pedido as p, detalle as d, productos as pr where p.idcliente='$ncliente' and AQUI--> p.idpedido = d.iddetallepedido <--AQUI and d.idproducto = pr.idproducto");
Seria asi
$result = mysql_query ("select * from pedido as p, detalle as d, productos as pr where p.idcliente='$ncliente' and p.idpedido = d.idpedido and d.idproducto = pr.idproducto");
  #3 (permalink)  
Antiguo 26/10/2004, 18:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Voy a mover tu pregunta al foro de Base de datos .. todo esto para que te orienten sobre la mejor consulta SQL que realizar .. entre otras cosas para que veas cosas como los "JOIN" de Mysql que son más optimos que lo que haces actualmente .. para eso ayudaría que presentases más que el código PHP que usas .. la estructura de tus tablas implicadas y que indiques que campos son los que relacionan a las tablas implicadas ("claves foráneas").

Cita:
Para los que no vieron la primera parte de este drama la cosa es asi
Para otra vez .. si hablas de un tema que ya publicastes, que seguro que alguien te sugirió algo y tuvistes movimiento sobre el .. lo mejor es que ese tipo de mensajes los retomes: responde tu miso con tu nueva inquietud o problema .. para continuar el hilo del mismo y no repetir tal vez en consejos o cosas que probar que ya te han contestado...

Un saludo,
  #4 (permalink)  
Antiguo 26/10/2004, 21:46
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Mil disculpas Cluster, prometo que no volvera a suceder.
Bueno, gracias a que moviste el mensaje a foro de BD solucione mi problema, era cuestion de acomodar las comparaciones de datos nomas :)
Ya que esto tiene que ver con lo anterior...
Tengo una variable que es $totalpedido que lo que hace es $importe*$cantidad y me da el total de ese pedido, ¿como hago para sumar todas esos $totalpedido y tener el total de la cuenta? Segun mi querido manual de anaya (siii, ese que odias :p ) simplemente poniendo $totalcuenta= $totalpedido+$totalpedido; deberia hacerlo pero no hay caso.
Para hacerlo mas facil...como hago para sumar una misma variable a si misma?
Bueno, eso es todo (por ahora)
Muchas gracias y hasta luego!!

PD: me olvidaba, GRACIAS LENZ, me salvaste la vida. Si algun dia vienen para argentina, tambien va para vos cluster, les invito un asado jeje

Última edición por DracoTronick; 26/10/2004 a las 21:49
  #5 (permalink)  
Antiguo 27/10/2004, 05:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Puedes usar SQL también para hacer operaciones aritméticas .. De hecho Mysql tiene funciones como SUM() (sumatorio) y otras similares .. así que pudes hacer cosas como

SELECT campo1*campo2 AS subtotal, SUM (campo1*campo2) AS total FROM tabla

en "subtotal" y en "total" tendrías respectivamente el subtotal (de cada "registros" y el total sumatorio de esos registros)

Se usan "Alias" .. para que los llames desde PHP en un $r['nombre_alias_creado']

Un saludo,
  #6 (permalink)  
Antiguo 01/11/2004, 20:25
DracoTronick
Invitado
 
Mensajes: n/a
Puntos:
Cluster, la verdad que no entendi nada ese select que me pusiste como ejemplo....(si ya se...soy bastante lelo...)
No hay un forma mas simple como...algo asi.....como...
que sume la variable $totalpedido (que es importeproducto*cantidad) tantas veces como aparece en la consulta?

Gracias y hasta luego!
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 21:10.