-1

我目前正在尝试使用来自两个mysql表“order”和“order_items”的信息制作一个表,因为它们都共享订单ID

命令

http://gyazo.com/b5761696c5650d0f24d883fd914f3564.png

order_items

在此处输入图像描述

我想在同一行显示这样的表格,其中产品名称可能会循环

在此处输入图像描述

我想通过内部连接来做到这一点,因为它更多地标志着我在做什么

这是我目前拥有的,但目前不起作用

$query = "SELECT order.date_bought, order.total_price, order_items.product_name FROM order INNER JOIN order_items ON order.order_id = order_items.order_id WHERE order.student_id = $id ORDER BY order_id DESC";

$result = mysql_query($query);

$num = mysql_num_rows($result);

$i=0;

while($i < $num){
$date_bought = mysql_result($result,$i,"date_bought");

echo $date_bought;

}

错误:mysql_num_rows() 期望参数 1 是资源,给定的布尔值

但我很确定这是因为查询

4

2 回答 2

2

order是一个保留字,转义它:

SELECT 
  o.order_id,
  o.date_bought, 
  o.total_price, 
  oi.product_name 
FROM `order` AS o
INNER JOIN order_items AS oi ON o.order_id = oi.order_id 
WHERE o.student_id = $id 
ORDER BY o.order_id DESC;

尽量避免使用这些名称。


如果要在每个订单的同一行中显示产品名称,请使用GROUP_CONCAT函数:

SELECT 
  o.order_id,
  o.date_bought, 
  o.total_price, 
  GROUP_CONCAT(oi.product_name SEPARATOR ' ') AS ProdcutNames
FROM `order` AS o
INNER JOIN order_items AS oi ON o.order_id = oi.order_id 
WHERE o.student_id = $id 
GROUP BY o.order_id,
         o.date_bought, 
         o.total_price
ORDER BY o.order_id DESC;
于 2013-03-19T18:14:43.203 回答
0

我看到你是 mysql 的初学者。尝试一下:

SELECT * FROM order o INNER JOIN order_items oi ON o.order_id = oi.order_id WHERE order.student_id = $id GROUP BY o.order_id ORDER BY o.order_id DESC 

“组”是不重复结果。

于 2013-03-19T18:34:37.033 回答