我是MySQL的新手,不知道如何编写我个人项目所需的查询。
我在这个查询中有三个表需要讨论 - books,tags和books_tags(联结表)。
它们的基本结构相当基础 - 书籍和标签都有一个id列和一个名称列(在书中称为'title',在标签中称为'tags')。 books_tags表有book_id和tag_id。
我希望能够编写一个返回类似
的查询TITLE | TAG
--------------------
BOOK ONE | PHP
BOOK ONE | MYSQL
BOOK ONE | OOP
BOOK TWO | CSS
BOOK TWO | HTML
BOOK THREE | JAVASCRIPT
你明白了。我这样做是使用PHP循环和多个查询,但查询计数真的非常快,并成为一个巨大的混乱。我想保持它的精益和意思。
答案 0 :(得分:4)
select b.title, t.tag
from books b
inner join books_tags bt on b.id = bt.book_id
inner join tags t on bt.tag_id = t.id
order by b.title, t.tag
如果您想列出没有标签的书籍,您可以这样做:
select b.title, t.tag
from books b
left outer join books_tags bt on b.id = bt.book_id
left outer join tags t on bt.tag_id = t.id
order by b.title, t.tag