Salida de una categoría seguida de los productos en ella

Tengo 3 tablas en una base de datos mysql, categoría, producto y cat_pro, la tabla de categorías contiene categorías, la tabla de productos contiene productos y sus precios, cat_pro contiene las claves principales de categorías y productos respectivamente. Una categoría puede contener numerosos productos. La tabla de categorías tiene id_categoría y nombre de categoría, la tabla de productos tiene id_producto, nombre_producto y precio. La tabla cat_pro se usa durante las uniones internas ya que contiene las claves externas de categorías y productos.

Lo que quiero es una declaración de consulta SQL que genere una categoría seguida de los productos en esa categoría junto con sus precios hasta que todas las categorías y productos se agoten de manera vertical. El problema es generar la información de la siguiente manera. Esa es una categoría seguida por sus productos. Por ejemplo

Category A
product 1 250$
product 2 450$
Category B
product 1 100$
product 2 400$
Category C
product 1 300$
product 2 100$

preguntado el 28 de julio de 12 a las 16:07

No puede hacer eso exactamente en MySQL, porque una fila no puede ser un "miembro" de otra fila. -

Sería más claro tener el esquema mysql de sus 3 tablas. Puede hacer clic en "editar" para agregar información a su pregunta inicial. -

1 Respuestas

Veo que etiquetó su pregunta como PHP, así que le daré la forma PHP-MySQL de hacerlo. El código debería ser algo como esto (ajuste los nombres de las columnas a su propio esquema)

<?php
$query = "SELECT * from category c inner join cat_pro cp on c.category_id = cp.category_id
  inner join product p on cp.product_id = p.product_id order by c.cateogry_id desc";
$res = mysqli_query($query);
$lastCat = "";
while($row = mysqli_fetch_array($res)) {
  if($lastCat != $row["category_name"]) echo $row["category_name"]."<br/>";
  echo $row["product_id"]." ".$row["product_price"]."&#36;<br/>";
}
?>

Respondido 28 Jul 12, 18:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.