【发布时间】:2019-01-25 21:46:12
【问题描述】:
编辑:使用 MySQL。
在此示例中,我有一个 Posts 表、一个 Users 表、一个 Tagged_Posts 表和一个 Tags 表。
Posts 表有一个外键 user_id 对应于 Users 表和 id 列。
Tagged_posts 表有两个外键,一个用于 tag_id,一个用于 post_id
Tags 表只有一个 id 和一个 slug。
我正在尝试查询帖子并返回与该帖子相关的所有数据,即帖子数据、帖子的用户数据以及属于该帖子的标签。
一篇文章可以有很多标签。
这是我正在使用的 SQL 查询:
$sql = "SELECT posts.title, users.name, users.handle, users.email, tags.slug as tags
from posts
INNER JOIN users ON posts.user_id = users.id
INNER JOIN tagged_posts ON posts.id = tagged_posts.post_id
INNER JOIN tags ON tagged_posts.tag_id = tags.id";
由于这个特定的帖子有 3 个与之关联的标签,因此查询会返回相同的帖子 3 次,其中列出了不同的标签值。见下文:
Array
(
[0] => Array
(
[title] => This is my first Post!
[name] => exampleuser
[handle] => example
[email] => example@gmail.com
[tags] => database-design
)
[1] => Array
(
[title] => This is my first Post!
[name] => exampleuser
[handle] => example
[email] => example@gmail.com
[tags] => sql
)
[2] => Array
(
[title] => This is my first Post!
[name] => exampleuser
[handle] => example
[email] => example@gmail.com
[tags] => php
)
)
我是否能够进行一次查询并获得与帖子相关的所有内容?
【问题讨论】:
-
你用的是什么数据库?
-
MySQL。我会把它添加到我的问题中,谢谢