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

Consulta múltiple mysql

Estas en el tema de Consulta múltiple mysql en el foro de Mysql en Foros del Web. Hola , y gracias de antemano . tengo que realizar una consulta a las bases de datos de virtuemart para poder mostrar unas estadísticas de ...
  #1 (permalink)  
Antiguo 09/02/2014, 09:14
 
Fecha de Ingreso: julio-2013
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 2
Consulta múltiple mysql

Hola , y gracias de antemano .
tengo que realizar una consulta a las bases de datos de virtuemart para poder mostrar unas estadísticas de de compra y de momento ya muestro las cantidades y los productos pero tengo problemas para mostrar las categorias de productos ya que están en otra tabla.
La estructura de las tablas es mas o menos así:

order_items
id Createdby product_id p_name ....

porduct_cartergory

Id product_id cartergory_id ...........


Lo que tengo hasta ahora lo que hace es consultar en la primera tabla por createdby y arroja todo los resultados lo hago asi:


Código SQL:
Ver original
  1. SELECT * FROM `#__virtuemart_order_items` WHERE  `created_by` =$tuid

Cita:
Editado: Leer las reglas del foro de Base de Datos.
Pero ahora quiero que muestre otro div con id_catergory, el problema es que está en otra tabla que tiene en común con esta poduct_id pero no se muy bien como modificar el querry o si aria falta hacer uno nuevo.

Gracias de antemano

Última edición por gnzsoloyo; 09/02/2014 a las 12:18
  #2 (permalink)  
Antiguo 09/02/2014, 12:24
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: Consulta múltiple mysql

Cita:
Pero ahora quiero que muestre otro div con id_catergory, el problema es que está en otra tabla que tiene en común con esta poduct_id pero no se muy bien como modificar el querry o si aria falta hacer uno nuevo.
El cómo muestres las cosas en la pantalla, es ajeno e irrelevante para la consulta. En el foro de BBDD no tratamos ese detalle, pero si el tema de las consultas.
Lo que no queda claro en tu pregunta es si quieres hacer una sola consulta que te devuelva todo lo que se relaciona entre ambas tablas, o si quieres poner por separado en pantalla dos tblas visuales con los datos correspondiente a cada parte.
En el primer caso, sería una consulta con JOIN:
Código MySQL:
Ver original
  1. SELECT I.id, I.Createdby, I.product_id, I.p_name, C.cartergory_id
  2. FROM order_items I INNER JOIN porduct_cartergory C ON I.product_id = C.product_id
  3. WHERE  `created_by` =$tuid

En el segundo caso deberías realizar una consulta separada para cada categoría que quieras consultar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/02/2014, 12:52
 
Fecha de Ingreso: julio-2013
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Consulta múltiple mysql

traté de hacerte caso pero no me arroja ningún resultado esto es lo que puse

Código SQL:
Ver original
  1. SELECT I.order_item_name, I.created_by, I.virtuemart_product_id, I.product_quantity, I.product_subtotal_with_tax, C.cartergory_id
  2. FROM #__virtuemart_order_items I INNER JOIN #__virtuemart_product_categories C ON I.virtuemart_product_id = C.virtuemart_product_id WHERE  I.created_by =$tuid

La idea es que siga haciendo lo que hacia antes pero que ademas me muestre la categoría de cada producto .

Muchas gracias por tu ayuda de todos modos
  #4 (permalink)  
Antiguo 09/02/2014, 13:04
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: Consulta múltiple mysql

Cita:
traté de hacerte caso pero no me arroja ningún resultado
Con esa sintaxis yo me arriesgaría a decirte que no es que no te arroje resultados, sino que debe estar disparando un error de sintaxis...
Casi puedo adivinar que no estás verficando si MySQL devuelve errores. ¿No es así?

Código MySQL:
Ver original
  1.     I.order_item_name,
  2.     I.created_by,
  3.     I.virtuemart_product_id,
  4.     I.product_quantity,
  5.     I.product_subtotal_with_tax,
  6.     C.cartergory_id
  7. FROM `#__virtuemart_order_items` I INNER JOIN `#__virtuemart_product_categories` C
  8.     ON I.virtuemart_product_id = C.virtuemart_product_id
  9. WHERE  I.created_by =$tuid;
Si no devuelve errores, pero tampoco datos la respuesta es simplísima: No tienes datos en las tablas que cumplan al mismo tiempo con la relación
Código MySQL:
Ver original
  1. ON I.virtuemart_product_id = C.virtuemart_product_id
y con
Código MySQL:
Ver original
  1. WHERE  I.created_by =$tuid
En este último caso, se agregaría la posibilidad de que la variable no contenga lo que supones que debe contener... Un error de los más habituales.
No hay otra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/02/2014, 14:13
 
Fecha de Ingreso: julio-2013
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Consulta múltiple mysql

Eres el mejor funciona a las mil...

Otra consulta si quisiera sumar las cantidades de una categoría sería algo así ?

Código SQL:
Ver original
  1. SELECT
  2. I.order_item_name,
  3.     I.created_by,
  4.     I.virtuemart_product_id,
  5.     I.product_quantity,
  6.     C.virtuemart_category_id
  7.  SUM(I.product_quantity) FROM `#__virtuemart_order_items` I INNER JOIN `#__virtuemart_product_categories` C
  8.     ON I.virtuemart_product_id = C.virtuemart_product_id
  9. WHERE  I.created_by =$tuid; AND C.virtuemart_product_id = 7


Es que no me funciona seguro que algo hago mal a parte de todo

Mil gracias
  #6 (permalink)  
Antiguo 09/02/2014, 14:38
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: Consulta múltiple mysql

Cuando quieres hacer algún cálculo sobre un determinado ítem debes usar obligatoriamente GROUP BY para agrupar sobre la columna que discrimina el elemento a procesar, aún cuando vayas a obtener lo correspondiente a un único tipo.
Esto último siempre que quieras obtener tambien un identificador. Es decir: Si tienes al menos dos columnas invocadas, la que se calcula y otra más no calculada, obligatoriamente debes usar GROUP BY.

Si deseas datos sobre el mismo item:
SELECT
Código MySQL:
Ver original
  1. I.order_item_name,
  2.     I.created_by,
  3.     I.virtuemart_product_id,
  4.     C.virtuemart_category_id
  5.  SUM(I.product_quantity) totalProducto
  6. FROM `#__virtuemart_order_items` I INNER JOIN `#__virtuemart_product_categories` C
  7.     ON I.virtuemart_product_id = C.virtuemart_product_id
  8.     I.created_by =$tuid
  9.     AND C.virtuemart_product_id = 7
  10. GROUP BY I.virtuemart_product_id;

Si sólo quieres el total:
Código MySQL:
Ver original
  1.  SUM(I.product_quantity) totalProducto
  2. FROM `#__virtuemart_order_items` I INNER JOIN `#__virtuemart_product_categories` C
  3.     ON I.virtuemart_product_id = C.virtuemart_product_id
  4.     I.created_by =$tuid
  5.     AND C.virtuemart_product_id = 7;
La segunda no requiere el GROUP BY porque operas sobre una única columna, por lo que siempre devolverá un único dato. Pero en la anterior devuelve además otros datos relacionados, por lo que si o si debe ir.

Notas:
1) Esta sintaxis del GROUP BY, con un único campo indicado, es exclusiva de MySQL. En los demás DBMS es obligatorio poner todos los campos del SELECT no afectados por una función agrupada.
2) Lo que tienes debe estar devolviendote un error sintáctico porque tienes un cierre de sentencia mal colocado:
Código SQL:
Ver original
  1. WHERE  I.created_by =$tuid; -- < Este punto y coma luego de la variable es interpretado por MySQL como cierre de sentencia, lo que genera un error de sintaxis
  2. AND C.virtuemart_product_id = 7
3) No te lo dije en el post anterior, pero es inconveniente el uso de ciertos caracteres en los nombres de objetos de base de datos. El numeral (#) se usa para comentarios entre líneas, lo que en MySQL generaría errores si no lo pones entre acentos agudos (`).
Procura no usar caracteres especiales ni palabras reservadas. Te ahorrarás problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 10/02/2014, 10:59
 
Fecha de Ingreso: julio-2013
Mensajes: 34
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: Consulta múltiple mysql

muchas gracias por tu tiempo se aprecia un montón, si alguna vez puedo ayudarte en algo que esté en mi mano no dudes en pedírmelo , aún que viendo lo maestro que eres en poco te podré ayudar.

Saludos Cordiales.

Última edición por osobuco; 10/02/2014 a las 16:26

Etiquetas: múltiple, 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




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