MySQL 从由第三个 table 连接的 2 table 中提取内容
MySQL pulling content from 2 tables that is connected by a third table
我目前在数据库中有 2 个 table,我需要从 "content" 和 "type" 获取信息。这两个 table 由第三个 table 名称链接 "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
我目前在数据库中有 2 个 table,我需要从 "content" 和 "type" 获取信息。这两个 table 由第三个 table 名称链接 "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