大家好,这是我在stackoverflow中的第一个问题,所以我会很清楚,我对php很新,所以请放轻松。 对,所以我想要做的是我有5个表,其中已经设置了关系 并且我试图使用游戏ID注释显示相关的类别和平台,该类别有自己的表格,因此平台然后还有另外两个表格,它们具有游戏ID和猫ID,并且相同我在游戏桌上的平台和游戏以及领域是: id - >用于游戏ID name - >代表游戏名称 细节和图像。 并在game_cat中: g_id和cat_id 然后是表格,其中包含具有名称和ID的类别 和平台相同。这些是我试图从中选择的表格 enter image description here 我的sql是:
SELECT games.*,
game_cat.*,
category.*
FROM games,
game_cat,
category
WHERE games.id='game_cat.g_id'
AND game_cat.g_id='game_cat.cat_id'
AND game_cat.cat_id='category.id'
但它不适用于phpmyadmin sql所以我做了一些研究,并且在sql中有一些我不熟悉的加入。 任何帮助表示赞赏。
答案 0 :(得分:1)
不要使用单引号作为列名(当需要最终使用backtics时) 如果你总是匹配列,则使用内连接(否则你离开了连接),并且可以使用别名来进行压缩查询 (我还添加了最后两个表...希望相关的列名称是正确的)
SELECT g.*,gc.*,c.* , gp.*, p.*
FROM games g
INNER JOIN game_cat gc on g.id = gc.g_id
INNER JOIN category c on gc.cat_id=c.id
INNER JOIN game_platform gp on g.id = gp.g_id
INNER JOIN platform p on gp.paltform_id=p.id
答案 1 :(得分:-1)
您需要根据表之间的外键关系在表之间加入(如果您不知道这是什么,请继续阅读它!)。像这样的东西(我不知道哪些列代表外键,所以这样做):
SELECT games.*,
game_cat.*,
category.*
FROM games g
INNER JOIN game_cat gc on (g.game_id = gc.g_id)
INNER JOIN category c on (gc.cat_id = c.cat_id)
WHERE games.id='game_cat.g_id'
AND game_cat.g_id='game_cat.cat_id'
AND game_cat.cat_id='category.id';
这似乎是games
和category
之间多对多关系的标准实现 - 这是正确的吗?