Php 输出类别,后跟其中的产品

Php 输出类别,后跟其中的产品,php,mysql,Php,Mysql,我在mysql数据库中有3个表,category、product和cat_pro,category表包含categories,products表包含products及其价格,cat_pro分别包含categories和products的主键,一个category可以包含多个products。 Category表具有Category_id和Category name,products表具有product_id、product_name和price。cat_pro表在内部联接期间使用,因为它包含类别

我在mysql数据库中有3个表,category、product和cat_pro,category表包含categories,products表包含products及其价格,cat_pro分别包含categories和products的主键,一个category可以包含多个products。 Category表具有Category_id和Category name,products表具有product_id、product_name和price。cat_pro表在内部联接期间使用,因为它包含类别和产品的外键

我想要的是一个sql查询语句,它输出一个类别,后跟该类别中的产品及其价格,直到所有类别和产品以垂直方式耗尽。 问题是以下面的方式输出信息。这是其产品后面的一个类别 比如说

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

我看到您将您的问题标记为PHP,所以我将为您提供PHP MySQL方法。 代码应该是这样的(根据您自己的模式调整列名)



在MySQL中不能完全做到这一点,因为一行不能是另一行的“成员”。使用3个表的MySQL模式会更清楚。您可以单击“编辑”向初始问题添加信息。
<?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/>";
}
?>