我有一个简单的数据库,其中只有几个表(和一些示例列):
游戏(gm_id,game_name,company,desc)
plateform_master(p_id,plateform_name)
plateform_details(pd_id,gm_id,p_id,release_date)
有没有一种方法可以创建单个SQL查询,该查询将返回具有多个平台的所有游戏详细信息
最佳答案
您的问题不是很清楚。您指的是哪个posts
和categories
?
这里是一个基于我的理解的示例:从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
;
感谢您的投票。我还想告诉您,您在这里没有多对多关系。您只有一对多。多对多意味着在其他两个之间使用中间表。