Foros del Web » Programando para Internet » PHP »

hacer select en php y Mysql, ayudas con el análisis !

Estas en el tema de hacer select en php y Mysql, ayudas con el análisis ! en el foro de PHP en Foros del Web. -Tengo una tabla PAQUETE -Hay 3 Pc's que llenan esta tabla por orden de llegada. -la imagen resume mi consulta La pregunta es: como puedo ...
  #1 (permalink)  
Antiguo 23/08/2011, 10:38
 
Fecha de Ingreso: agosto-2010
Ubicación: Lima - Perú
Mensajes: 90
Antigüedad: 13 años, 8 meses
Puntos: 2
De acuerdo hacer select en php y Mysql, ayudas con el análisis !

-Tengo una tabla PAQUETE
-Hay 3 Pc's que llenan esta tabla por orden de llegada.
-la imagen resume mi consulta



La pregunta es:

como puedo imprimir los productos por CLIENTE si ellos pueden comprar 1 o varias veces?

el tema va por algo de analis, cualquiera ayuda será agredecida y compartiré , mas detalladamente el proyecto q vengo realizando.

Saludos de Perú
  #2 (permalink)  
Antiguo 23/08/2011, 10:53
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Vas a mostrar todos los registros en una sola pagina agrupados por clientes?
Que intentaste para mostrar los datos? Ya veo que tienes la consulta, cuando intentaste como lo mostro y como quieres que se muestre?

Si por ejemplo vas a mostrar TODOS los paquetes agrupados por clientes. Puedes hacerlo de varias maneras.
1 seria obtener todos los clientes diferentes y luego por cada cliente obtener los "Detalles".
Código PHP:
Ver original
  1. //Tambien puedes hacer la consulta como: SELECT DISTINCT Cliente FROM Paquetes
  2. while($row = mysql_fetch_assoc(mysql_query("SELECT Cliente FROM Paquetes GROUP BY Cliente"))) {
  3.   echo "<h3>{$row['Cliente']}</h3>";
  4.   while($detalles = mysql_fetch_assoc(mysql_query("SELECT Detalle FROM Paquetes WHERE Cliente = '{$row['Cliente']}'"))) {
  5.     //Imprime el detalle aqui
  6.   }
  7. }

Ahora bien, para mi gusto son demasiadas consultas para algo tan simple. Otra forma seria agrupar por Cliente y Detalle y hacer algo como (esta vez solo pseudocodigo):
Declaro variable ultimoCliente
Código:
Por cada registro:
  Si ultimoCliente es diferente al cliente actual
    Imprimo el nombre del cliente
  
  Imprimo el Detalle del registro
  #3 (permalink)  
Antiguo 23/08/2011, 13:38
 
Fecha de Ingreso: agosto-2010
Ubicación: Lima - Perú
Mensajes: 90
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Hola Ronruby este es el escenario:


-las 3Pc's (cajas) emiten TICKETS por cada compra del producto.
-las 3 Pc's llenan una tabla (PRODUCTO).
-Solo quiero imprimir lo que el usuario en ese momento compra, se puede dar el caso de que el CLIENTE puede regresar a comprar (Ver imagen).
-El detalle es que los datos son ingresados por orden de llegada (ver imagen anterior tabla excel).

mi consulta mas que nada va por la lógica de programar.
  #4 (permalink)  
Antiguo 23/08/2011, 19:23
Avatar de Luchhh  
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

una solucion que te puedo llegar a dar, es que tengas la tabla producto, pero lugar de tener un cliente, tenes un codigo de venta.

entonces imprimis el los productos de esa venta

otra, es en un formulario poder seleccionar todos los productos que compro y antes de enviarlo a la base de datos, los imprimos y despues envias a la base de datos.

me parece completamente innecesario ir metiendo productos en una base de datos y despues pedirlos de nuevo..

simplemente trabajalos y una vez que finalices la venta los imprimos y despues los guardas en la DB
  #5 (permalink)  
Antiguo 23/08/2011, 19:59
 
Fecha de Ingreso: julio-2011
Ubicación: guadalajara mX
Mensajes: 84
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Para obtener los datos de un solo cliente seria este

Código PHP:
Ver original
  1. mysql_query( SELECT  * FROM `productos` WHERE `productos` . `clientes` = $tu_cliente )

Eso seria para filtrar solo el cliente

faltaria algo para filtrar la compra pero todavia no entiendo bien tu planteamiento!!

saludos y espero te sirva de algo!!
  #6 (permalink)  
Antiguo 24/08/2011, 04:27
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Buenas,

Tu problema es de diseño de la base de datos. Según tengo entendido lo que quieres hacer es seleccionar únicamente los productos que un cliente ha comprado en su última compra y excluir los de las anteriores. Pero en tu tabla de la base de datos no tienes ningún campo que te discrimine esta diferencia. Si un cliente viene hoy por la mañana y compra dos productos, pero luego vuelve por la tarde y compra otros tres productos (en la misma caja), ¿qué campo de tu base de datos diferencia estos 5 productos entre sí? Ninguno. Ese es tu problema, diseño de la tabla.

Tendrás que almacenar algún valor que discrimine unas compras de otras, por ejemplo, la fecha o la fecha y la hora. Este valor se podría poner igual para todos los productos de la misma compra. Así, luego podrás filtrar la consulta. Sin este campo, lo que pides es imposible.

Un saludo.

PD: esto suponiendo que la tabla es un recurso compartido por las tres cajas. Es decir, que una misma compra puede venir en registros no consecutivos. Es así?
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Última edición por vgonga1986; 24/08/2011 a las 04:29 Razón: Añadir PD
  #7 (permalink)  
Antiguo 24/08/2011, 08:15
 
Fecha de Ingreso: agosto-2010
Ubicación: Lima - Perú
Mensajes: 90
Antigüedad: 13 años, 8 meses
Puntos: 2
De acuerdo Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Gracias por las respuestas, efectivamente mi problema pasa por el diseño de la BD en este caso la tabla, ya que no coloqué ningún campo donde se diga si el producto ah sido impreso o no, es por ello que agregaré el campo ESTADO_IMPRESION para indicar si el producto ah sido impreso anteriormente en otra CAJA o no.

ahora surge una nueva pregunta y es la siguiente (ver imagen):

que pasa si yo soy el CAJA1 y estoy atendiendo al cliente 20110007 y cuando estoy a punto de dar el botón imprimir es en ese preciso momento que CAJA3 ingresó un nuevo registro de otro cliente y al querer imprimir lo de mi cliente termino imprimiendo de otro CLIENTE .


quiero subir este programa al internet pero tengo inconvenientes con los permisos en mi Hosting ya que no me reconoce las vistas, en el transcurso de los días lo estaré subiendo para q vean y de paso corrijan algunas cosas.
  #8 (permalink)  
Antiguo 24/08/2011, 08:59
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

A ver, con esta variable es mucho más fácil todo. Si suponemos que ESTADO_IMPRESION se pone a 1 cuando ya se ha imprimido y a 0 cuando no está imprimido, lo que tienes que hacer es lo siguiente:
1) Las cajas van registrando los productos que están pasando en cada momento (INSERT a la base de datos) de forma concurrente, es decir, pueden entrar consecutivos productos de cajas diferentes.
2) Una caja termina y da a imprimir tiquet. Hay que hacer una consulta a la base de datos que saque todos los productos de la caja en la que estamos situados para los que ESTADO_IMPRESION es 0:
Código MySQL:
Ver original
  1. SELECT * FROM Paquete WHERE ((Ubicacion = $caja) AND (ESTADO_IMPRESION = 0));
3) Con estos datos imprimes el tiquet y, a la vez, vas haciendo UPDATE para cambiar ESTADO_IMPRESION a 1, para que no salgan estos productos en la siguiente consulta.

Esto sería más o menos la solución, pero te sigo insistiendo en una cosa. Date cuenta que tal y como está la cosa ahora, tienes que hacer un insert para cada producto, un select y un update de nuevo para cada producto. No te parece algo ineficiente, lo suyo sería un campo que por sí sólo ya te hiciera la distinción, es decir, que no haya que modificarlo (así te ahorras el UPDATE último). Por eso yo te hablé de la fecha. Teniendo la fecha, puedes poner un filtro en la consulta que sólo saque aquellos productos que han sido registrados en una hora o en media hora, algo así, el tiempo que consideres oportuno para pensar que los productos ya son de otra compra. Sólo harías el insert inicial y el select para sacarlo todo, pero no tendrías que hacer un UPDATE, porque los productos en el siguiente select tendrían una fecha muy lejana y los tomaría como de una compra diferente.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 24/08/2011, 11:20
Avatar de Luchhh  
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

osea sigo pensando que no conviene ir ingresando los productos a la base de datos y despues volverlos a pedir.. y encima despues de ingresalos se complica pedirlos.

procesa la venta en el momento, imprimis y despues los guardas.

y simplemente tendrias que hacer un insert con la venta y listo
  #10 (permalink)  
Antiguo 25/08/2011, 01:23
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

@Luchhh, no siempre uno puede hacer las cosas como quiere. El sistema que tiene montado es complejo, es una aplicación real en la que unos cajeros de un supermercado (supongo) graban cosas a la base de datos y su aplicación centraliza todas las operaciones. Cómo sabes tú que puede realizar las impresiones antes de guardar los productos en la base de datos? Igual los cajeros sólo son máquinas tontas que no saben más que escribir, nosotros no sabemos la interfaz de operaciones de esos cajeros, supongo que si lo hace así es porque está dentro de sus especificaciones. Que no es la forma mejor, pues igual no, pero si es lo que tiene se tendrá que ajustar a ello, digo yo.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #11 (permalink)  
Antiguo 25/08/2011, 10:00
 
Fecha de Ingreso: agosto-2010
Ubicación: Lima - Perú
Mensajes: 90
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Este proyecto es para REGISTRAR paquetes a unos CONTENEDORES para el evento MISTURA 2011 de PERÚ. en los próximos días espero colgar el proyecto vía web para escuchar sus criticas constructivas. ya que ahora estaré ocupado haciendo las pruebas en la IMPRESORA TICKETERA para imprimir los TICKETS con FPDF.

Thanks a lot from PERU
  #12 (permalink)  
Antiguo 25/08/2011, 14:32
Avatar de lordglazoon  
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Un aporte que va a solucionar el problema y otro mas adelante. que pasa si yo quiero saber cuanto vendió la caja 1 en el día, falta en la base poner un campo caja, así cuando buscas las ventas discriminas por caja, de esta manera una caja nunca imprimirá ventas de otra.

Mas un registro de fecha y hora estas listo.
  #13 (permalink)  
Antiguo 26/08/2011, 01:28
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: hacer select en php y Mysql, ayudas con el análisis !

Yo deduje que Ubicación en la tabla que muestra es la caja, pero vamos, igual deduje de más. Y la fecha ya se lo he propuesto, porque se ahorra un UPDATE, pero no sé si lo habrá hecho.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: mysql, select, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:39.