我是 MySQL 的新手,不知道如何编写我的个人项目所需的查询。
我有三个表需要在此查询中进行对话 - books、tags 和 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 循环和多个查询来执行此操作,但查询计数非常快地变得非常高并且变得一团糟。我想让它保持精简和简洁。
最佳答案
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
关于mysql - 帮助编写 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825773/