获取其他用户提供的用户感谢计数

时间:2015-07-01 11:14:38

标签: mysql

我正在尝试构建论坛,但我需要有关构建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)

但我需要获得其他用户提供的用户感谢计数。

1 个答案:

答案 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子句中。