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