我想展示所有用户的结论。
我有3张桌子。
餐桌贴
post_id(index) user_id
1 1
2 3
3 3
4 4
桌子照片
photo_id(index) user_id
1 2
2 4
3 1
4 1
桌面视频
photo_id(index) user_id
1 4
2 4
3 3
4 3
和表中的用户
user_id(index) user_name
1 mark
2 tommy
3 john
4 james
实际上,每个表有4行以上。
我想要这样的结果。
id name post photo videos
1 mark 1 2 0
2 tommy 0 1 0
3 john 2 0 2
4 james 1 1 2
5 .. .. .. ..
下面的代码是可以正常运行但非常慢的SQL,如果您能帮助我如何使用LEFT JOIN
它,将不胜感激。谢谢。
"select user.*,
(select count(*) from post where post.userid = user.userid) postCount,
(select count(*) from photo where photo.userid = user.userid) photoCount,
(select count(*) from video where video .userid = user.userid) videoCount
from user order by user.id"
(或按我想要的ORDER BY postCount,photoCount或videoCount ASC或DESC)
我之前做过研究,但没有任何帮助。
SELECT u.user_id,
u.user_name,
COUNT(DISTINCT p.post_id) AS `postCount`,
COUNT(DISTINCT ph.photo_id) AS `photoCount`,
COUNT(DISTINCT v.video_id) AS `videoCount`
FROM user u
LEFT JOIN post p
ON p.user_id = u.user_id
LEFT JOIN photo ph
ON ph.user_id = u.user_id
LEFT JOIN video v
ON v.user_id = u.user_id
GROUP BY u.user_id
ORDER BY postCount;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句