2010-09-29 94 views
1

我对MySQL相当陌生,不知道如何编写我个人项目所需的查询。帮助编写SELECT语句

我需要在此查询中谈过三个表 - 书籍,标签和books_tags(结表)。

它们的基本结构是相当基础 - 书籍和标签都有一个ID列和名称列(在书中,它被称为“标题”,并在标签,它被称为“标签”)。 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

Aaghh,没有PHP循环!尽可能在MySQL中准备好你的数据。 SQL语言是为此设计的。 – thomaspaulb 2010-09-29 21:15:03

+0

是的。因此,这个问题。 – Marcus 2010-09-29 23:00:25

回答

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 
+0

再次感谢,RedFilter。本周第二次,您可以通过查询问题来帮助我。你碰巧有一本很棒的MySQL书吗?我真的很渴望在这方面做得更好。 – Marcus 2010-09-29 23:13:06