2014-10-03 25 views
1

我需要显示列出游戏标题,开发者和发布者的表格。每款游戏都可以有多个开发者和发布者。从下面的图表中,是否有可能通过使用内部连接的一个查询来获取所有这些信息,还是必须进行多个数据库事务?多个内部连接或多个查询?

enter image description here

既然这样我已经能够获得游戏的开发者(单数),但我不知道如何抓住多个开发商以及多个出版商的一个查询。这是我的查询到目前为止:

SELECT games.id, games.title, companies.id, companies.name 
INNER JOIN game_developer ON game_developer.games_id = games.id 
INNER JOIN companies ON companies.id = game_developer.companies_id 
GROUP BY games.title 
ORDER BY games.title 
LIMIT 50 

最终产品应该是这个样子:

enter image description here

+0

呈现良好! – Fergoso 2014-10-03 22:21:14

回答

1

使用GROUP_CONCAT把所有的名字:

SELECT games.id, games.title, 
     GROUP_CONCAT(DISTINCT dc.name) AS developers, 
     GROUP_CONCAT(DISTINCT pc.name) AS publishers 
INNER JOIN game_developer ON game_developer.games_id = games.id 
INNER JOIN companies AS dc ON dc.id = game_developer.companies_id 
INNER JOIN game_publisher AS gp ON gp.games_id = games.id 
INNER JOIN companies AS dp ON dp.id = gp.companies_id 
GROUP BY games.id 
ORDER BY games.title 
LIMIT 50 

您需要请使用DISTINCT,因为与发布商和开发人员加入后会生成包含大量重复项的跨产品。

+0

工程就像一个魅力。谢谢 – 2014-10-04 00:01:32