2016-12-27 5 views
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 (id,firstName,lastName) 
ORDER BY (SUM(qty*price)) LIMIT 1; 

1052あいまいです - フィールドリストの列「idが」あいまいです

私は最高の顧客のMysqli - #1052 - フィールドリストの列「idは」

答えて

2

いくつかの簡単なルールに関連付けされるように、あなたがorders.idたい

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; 

:へ

+0

おかげでその作業 –

+0

私は私がこの条件DATEを追加する必要が – spencer7593

+0

#4「は常に*コラム*参照を修飾」であるべきだと思います(日付)= 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)。 SQLを書くとき、それらは、数量と価格

0

変更

  • でカンマを使用しないでください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; 
関連する問題