Mysql 多对多关系上的单个SQL查询
我有一个简单的数据库,有几个表(和一些示例列): 游戏(总经理id、游戏名称、公司、描述) 平台主控台(p\U id,平台名称) 平台详细信息(pd\u id、gm\u id、p\u id、发布日期)Mysql 多对多关系上的单个SQL查询,mysql,sql-server,database,mysqli,database-design,Mysql,Sql Server,Database,Mysqli,Database Design,我有一个简单的数据库,有几个表(和一些示例列): 游戏(总经理id、游戏名称、公司、描述) 平台主控台(p\U id,平台名称) 平台详细信息(pd\u id、gm\u id、p\u id、发布日期) 是否有一种方法可以创建一个SQL查询,该查询将使用多个平台返回所有游戏详细信息您的问题不是很清楚。您指的是哪些帖子和类别? 下面是一个基于我理解的示例:从platform\u master中选择所有记录,并从platform\u details中获取每个记录的详细信息。您可以取消注释where部分
是否有一种方法可以创建一个SQL查询,该查询将使用多个平台返回所有游戏详细信息您的问题不是很清楚。您指的是哪些
帖子
和类别
?
下面是一个基于我理解的示例:从platform\u master
中选择所有记录,并从platform\u details
中获取每个记录的详细信息。您可以取消注释where
部分,以获取一条主记录及其详细信息。(“--”在SQL中表示注释)
对不起,我的错,应该是左连接
,而不是内部连接
根据更改后的要求尝试以下操作(未测试):选择所有游戏,并为每一个游戏获取其平台详细信息和平台主对应值:
select
gm.gm_id,
gm.game_name,
gm.company,
pd.release_date,
pm.plateform_name
from game as gm
left join plateform_details as pd on pd.gm_id = gm.gm_id
left join plateform_master as pm on (pm.p_id = pd.p_id AND pd.gm_id = gm.gm_id)
-- WHERE CONDITIONS
;
谢谢你的投票。我还想告诉你,你在这里没有多对多的关系。你只有一对多。多对多意味着在两张桌子之间使用中间桌子。是的,有一种方法可以做到这一点。加入表格,使用
groupby
按游戏ID对所有平台进行分组,并使用COUNT(*)
查看有多少个平台。提示:internal Join
select
gm.gm_id,
gm.game_name,
gm.company,
pd.release_date,
pm.plateform_name
from game as gm
left join plateform_details as pd on pd.gm_id = gm.gm_id
left join plateform_master as pm on (pm.p_id = pd.p_id AND pd.gm_id = gm.gm_id)
-- WHERE CONDITIONS
;