【发布时间】:2015-05-30 11:28:54
【问题描述】:
我有 3 张桌子:
Table User => id, name
Table Tag => id, tag_name, used, status
Table User_tag => id, user_id, tag_id, inserted_at
*其中user_id引用USER表的id字段,tag_id引用TAG表的id字段)
我的问题是: 我想选择所有标签并根据标签在user_tag中出现的次数对其进行排序,如果user_tag上根本没有出现,则根据TAG表上的USED字段对其进行排序。
我试过这样:
SELECT tag.*, COUNT(user_tag.id) as number_of_appear FROM tag
LEFT JOIN user_tag ON tag.id = user_tag.tag_id
WHERE tag.status = 1 AND user_tag.user_id = 2
GROUP BY tag.tag
ORDER BY number_of_appear DESC, tag.used DESC
在这种情况下,user_tag 表中没有 user_id = 2。这就是它返回 0 记录的原因。即使 user_tag 表上没有记录,我也希望它仍然返回一个 tag_name 。如果标签 id 根本没有出现,请根据 tag.used 字段对其进行排序。
我的目的是为用户创建一个标签选项,但我想从用户最常用的标签中对其进行排序。所以用户不必滚动搜索他们最喜欢的标签。
谁能帮帮我?
【问题讨论】:
-
感谢灵魂纠正我的问题 T.T .. 堆栈溢出还是新手~