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

游戏(gm_id,game_name,company,desc)

plateform_master(p_id,plateform_name)

plateform_details(pd_id,gm_id,p_id,release_date)

有没有一种方法可以创建单个SQL查询,该查询将返回具有多个平台的所有游戏详细信息

最佳答案

您的问题不是很清楚。您指的是哪个postscategories
这里是一个基于我的理解的示例:从plateform_master中选择所有记录,并从plateform_details中获取每个记录的详细信息。您可以取消注释where部分,以便获得一条包含其详细信息的主记录。 (“-”表示SQL中的注释)

select
    pm.p_id
    pd.*
from plateform_master as pm
inner join plateform_details as pd on pm.p_id = pd.p_id
-- where pm.p_id = 123


抱歉,我不好,应该是left join,而不是inner join

更改需求后,请尝试以下操作(未经测试):选择所有游戏,并为每个游戏获取plateform_details和plateform_master对应值:

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
;


感谢您的投票。我还想告诉您,您在这里没有多对多关系。您只有一对多。多对多意味着在其他两个之间使用中间表。

07-24 09:37
查看更多