2013-03-19 45 views
-1

即時通訊目前試圖與信息的表從兩個MySQL表「秩序」和「ORDER_ITEMS」,因爲他們都共享訂單IDINNER JOIN幫助和表mysql的

爲了

http://gyazo.com/b5761696c5650d0f24d883fd914f3564.png

ORDER_ITEMS

enter image description here

我想顯示一個表像這樣用同一產品名稱這將需要一個環行也許

enter image description here

我想要做到這一點有一個內部聯接,因爲它更標誌了什麼IM做

這是我的時刻,但目前不工作

$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是資源,鑑於布爾

但Im相當肯定它,因爲查詢

+3

但你的桌子都是一樣的?! – mavili 2013-03-19 18:13:39

+0

請更正order_items結構.. – 2013-03-19 18:14:17

+0

對不起,圖像錯了 – user2146226 2013-03-19 18:17:13

回答

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; 
+0

它仍然會拋出錯誤。 警告:mysql_num_rows()期望參數1是資源,布爾給定 也許我的php是錯的?或者我如何測試是否正在檢索 – user2146226 2013-03-19 18:24:05

+0

@ user2146226請嘗試獲取SQL錯誤。您可以直接在MySQL或phpadmin中測試它。 – 2013-03-19 18:30:39

+0

完成它。我必須concateanate $ id,謝謝。 atm它顯示相同的日期十億次,所以我的循環是錯誤的等等,生病試圖找出我如何顯示這個表,否則生病後問一個新的問題。感謝您的幫助 – user2146226 2013-03-19 18:32:42

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 

「組」不是爲了複製結果。