我正在通过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"
欢迎提出任何建议,谢谢!!
答案 0 :(得分:3)
非常简单:所有WHERE
条件都应放在所有JOIN
之后。
答案 1 :(得分:2)
您需要在所有连接表之后放置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
子句是最后一个。
答案 2 :(得分:0)
使用
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
答案 3 :(得分:0)
当您使用左连接或右连接时,请始终在连接后使用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之前使用它