帮助编写SELECT语句

时间:2010-09-29 20:55:31

标签: mysql

我是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循环和多个查询,但查询计数真的非常快,并成为一个巨大的混乱。我想保持它的精益和意思。

1 个答案:

答案 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