[英]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.