2016-12-27 54 views

回答

2

一些簡單的規則寫SQL語句時:

  • 絕不要用逗號FROM條款。
  • 始終使用明確的,適當的JOIN語法。
  • 總是用縮寫替代表格。
  • 總是限定您的專欄參考。

你得到的查詢更容易工作的第一次:

SELECT c.id, c.firstName, c.lastName, SUM(o.qty * m.price) 
FROM orders o JOIN 
    menu m 
    ON m.id = o.id_menu JOIN 
    customers c 
    ON c.id = o.id_customer 
GROUP BY c.id, c.firstName, c.lastName 
ORDER BY SUM(o.qty * m.price) 
LIMIT 1; 
+0

由於其工作 –

+0

我覺得#4應該是「始終有資格*列*引用」 – spencer7593

+0

我需要添加此條件DATE (date)= CURDATE(),怎麼樣? –

0

更改查詢這

SELECT customers.id,firstName,lastName, SUM(qty*price) FROM orders,menu,customers WHERE menu.id = orders.id_menu AND orders.id_customer = customers.id GROUP BY (customers.id,firstName,lastName) ORDER BY (SUM(qty*price)) LIMIT 1; 

我相信所有的這些表有一個名爲「ID」列,你需要指定你需要哪一種,否則它會給你此消息。

0

在不同表中有很多列作爲名稱'id',所以mysql不知道它來自哪裏(menu.id和customer.id)。

0

變化:

SELECT id,firstName,lastName, SUM(qty*price) 
    FROM orders,menu,customers 
    WHERE menu.id = orders.id_menu 
    AND orders.id_customer = customers.id 
GROUP BY (orders.id,firstName,lastName) 
ORDER BY (SUM(qty*price)) LIMIT 1; 

你想orders.id那些將與數量和價格有關

相關問題