gpt4 book ai didi

php - MySQL 从由第三个表连接的 2 个表中提取内容

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

我目前在数据库中有两个表,我需要从中获取信息,“内容”和“类型”。这两个表通过第三个表名称“typeMembers”链接。这是结构:

Table Content:
id content link date isPublished
1 content 1 link 1 3/13/91 1
2 content 2 link 2 3/18/91 1
3 content 3 link 3 3/22/91 1

Table type:
id name
1 Event
2 Page
3 Test

Table typeMember
id type_id content_id
1 1 1
2 2 1
3 3 1
4 1 2
5 1 3

目前我的查询设置为:

//using PDO in PHP
q = $dbc->prepare(
"SELECT a.id, a.content,a.date,a.link, c.name
FROM content a
LEFT OUTER JOIN typeMember b
ON b.content_id = a.id
LEFT OUTER JOIN types c
ON b.type_id = c.id
WHERE a.isPublished = 1
ORDER BY a.date DESC"
);
$r = $q->execute();

当返回时,我得到数据库中每个 typeMember 的 1 行而不是内容。我的结构有什么错误吗?

我想要返回的数据:

id      content      link      date      name
1 content 1 link 1 3/13/91 Event, Page, Test
2 content 2 link 2 3/18/91 Event
3 content 3 link 3 3/22/91 Event

如何返回

id      content      link      date      name
1 content 1 link 1 3/13/91 Event
1 content 1 link 1 3/13/91 Page
1 content 1 link 1 3/13/91 Test
2 content 2 link 2 3/18/91 Event
3 content 3 link 3 3/22/91 Event

编辑:归档数据实际上让我意识到发生了什么。与要键入的内容之间存在一对多的关系。有没有一种方法可以在一次查询中获取所有类型?

最佳答案

要获取同一行中的名称,可以使用 group_Concat

SELECT  a.id, a.content, a.date, a.link, group_concat(c.name )
FROM content a
LEFT JOIN typeMember b ON b.content_id = a.id
LEFT JOIN types c ON b.type_id = c.id
WHERE a.isPublished = 1
Group by a.id, a.content, a.date, a.link
ORDER BY a.date DESC

关于php - MySQL 从由第三个表连接的 2 个表中提取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39601488/

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