Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多对多关系上的单个SQL查询_Mysql_Sql Server_Database_Mysqli_Database Design - Fatal编程技术网

Mysql 多对多关系上的单个SQL查询

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部分

我有一个简单的数据库,有几个表(和一些示例列):

游戏(总经理id、游戏名称、公司、描述)

平台主控台(p\U id,平台名称)

平台详细信息(pd\u id、gm\u id、p\u id、发布日期


是否有一种方法可以创建一个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
;