我正在尝试构建论坛,但我需要有关构建MySQL查询的帮助。 所以我的问题 - MySQL查询构建应该是为了获得其他用户提供的用户感谢计数吗?
f_posts (table) Columns: - id - user_id (post author) f_thanks (table) Columns: - user_id (who give thanks) - post_id
我尝试使用FlySpeed SQL查询构建器构建查询,它看起来是:
SELECT p.id, p.user_id, k.id, k.post_id
FROM f_thanks k
LEFT JOIN f_posts p ON p.id = k.post_id
WHERE p.user_id = 15
Result(5行) 但这不正确,因为我有5个以上的感谢(应该至少10个......)
SELECT count(*) FROM f_thanks WHERE user_id = 15
结果是4行,这是正确的,因为我感谢其他用户4。
(我翻译了他们:kiitused = thanks; postitused = posts; Estonian-English)
但我需要获得其他用户提供的用户感谢计数。
答案 0 :(得分:0)
您正在使用left join
。然后,由于where
生成的inner join
值,您的NULL
子句会将其变为left join
。
解决方案是将条件移动到on
子句:
SELECT p.id, p.user_id, k.id, k.post_id
FROM f_thanks k LEFT JOIN
f_posts p
ON p.id = k.post_id AND
p.user_id = 15;
使用left join
时,请始终将第二个表中的条件放入on
子句中。