gpt4 book ai didi

mysql - 选择表中行对应的所有数据(SQL)

转载 作者:行者123 更新时间:2023-11-29 05:53:28 25 4
gpt4 key购买 nike

编辑:使用 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 中,你会这样做:

select p.title, u.name, u.handle, u.email, group_concat(t.slug) as tags
from posts p join
users u
on p.user_id = u.id join
tagged_posts tp
on p.id = tp.post_id join
tags t
on tp.tag_id = t.id
group by p.title, u.name, u.handle, u.email;

关于mysql - 选择表中行对应的所有数据(SQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51919287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com