簡體   English   中英

將WHERE條件添加到3表LEFT JOIN查詢中...?

[英]add WHERE condition to a 3 table LEFT JOIN query…?

我正在努力通過php世界,但仍能找到自己的腳。 我編寫了一個查詢,該查詢很好地用於從mysql收集我需要的東西,但是我無法使其在WHERE條件下工作。 任何幫助將非常感激!

這是我沒有WHERE條件的工作查詢:

SELECT foo.*, users.name, SUM(bar.amt) Total FROM foo 
     LEFT JOIN bar ON foo.id = bar.foo_id 
     LEFT JOIN users ON foo.foo_owner_id = users.id 
     LIMIT 16 GROUP BY foo.id"

這是我認為應該添加WHERE條件但不起作用的內容...

SELECT foo.*, users.name, SUM(bar.amt) Total FROM foo 
     WHERE foo.category = $var LEFT JOIN bar ON foo.id = bar.foo_id 
     LEFT JOIN users ON foo.foo_owner_id = users.id LIMIT 16 GROUP BY foo.id"

任何和所有建議都歡迎,謝謝!

非常簡單:所有WHERE條件都應放在所有JOIN之后。

您需要將WHERE子句放在所有聯接的表之后。 於是

SELECT foo.*, users.name, SUM(bar.amt) Total
FROM foo
    LEFT JOIN bar ON foo.id = bar.foo_id
    LEFT JOIN users ON foo.foo_owner_id = users.id
WHERE foo.category = $var
GROUP BY foo.id
LIMIT 16;

您可能還希望LIMIT子句位於最后。

采用

SELECT 
foo.*, 
users.name, 
SUM(bar.amt) Total 
FROM foo 
LEFT JOIN bar ON foo.id = bar.foo_id 
LEFT JOIN users ON foo.foo_owner_id = users.id 
WHERE foo.category = $var 
GROUP BY foo.id
LIMIT 16 

當您使用左連接或右連接時,請在連接后始終使用where子句。

SELECT foo.*, users.name, SUM(bar.amt) Total
   FROM foo
   LEFT JOIN bar ON foo.id = bar.foo_id
   LEFT JOIN users ON foo.foo_owner_id = users.id
   WHERE foo.category = $var
   GROUP BY foo.id
   LIMIT 16;

即使您想按ID等進行訂購,也要在LIMIT之前使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM