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