【发布时间】:2015-01-21 21:44:11
【问题描述】:
我需要从表中排除一些记录,并显示它们,然后,我需要显示被排除的其他记录。
我有 3 张桌子:
+----Songs----+ +----Tags----+ +----s_in_tag----+
| id | | id | | id |
| title | | name | | song_id |
+-------------+ +------------+ | tag_id |
+----------------+
在Songs表中我存储了一个歌曲列表,Tags表有一个标签列表,s_in_tag表绑定了这两个表。
假设我有 歌曲:1,歌曲 nr1。在标签中:1、POP; 2、说唱; 3、古典。而在 s_in_tag 中:1、3、2。 这意味着 song nr1 有标签 Classical
我希望能够在我的仪表板中添加/删除标签,但是我如何进行正确的查询以获取所有歌曲标签,并将它们显示为选中的复选框,然后显示表中的其他标签 标记为未选中的复选框?
到目前为止我已经得到了这个:
SELECT * FROM tags
JOIN s_in_tag
ON tags.id = s_in_tag.tag_id
WHERE s_in_tag.song_id = *song id*
AND s_in_tag.tag_id NOT IN (SELECT tags.id FROM tags) GROUP BY tags.id
我只是在尝试我在互联网上找到的东西,希望有人可以帮助我。
【问题讨论】: