2017-03-05 74 views
-1

你好家伙,这是我的第一个Q在stackoverflow,所以我会很清楚你我很新的PHP,所以对我来说很容易。 权等什么我试图做的是我哪来的关系已经设置 5桌,我试图展示相关的categorys和平台使用的游戏ID注意的是,类有一个表上拥有和使然后该平台还有其他两个表具有游戏ID和猫ID一起和相同的平台和游戏领域我在游戏桌是: ID - >为游戏ID 名称 - >为游戏名称 的细节和图像。 并在game_cat: G_ID和CAT_ID 然后thers的表其名称和ID 和同为平台的类别。这些都是我的表,我正在尝试从 enter image description here 选择和我的SQL是:如何从5个不同的表中选择确切的值

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这我不熟悉。 任何帮助表示赞赏。

+1

没有意思是不友好的,但你的问题是非常难以阅读 - 一些基本的标点和格式化(分段符,代码块等)会帮助很长的一段路。就目前而言,你的问题几乎不可能理解,所以很难帮助你。 –

+0

看看这个为出发点https://www.tutorialspoint.com/mysql/mysql-using-joins.htm – Yolo

+0

你见过https://dev.mysql.com/doc/refman/5.7/en/ join.html?为了将来的发布,请参阅http://meta.stackoverflow.com/questions/251361/how-do-i-format-my-code-blocks – chris85

回答

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 
+0

非常感谢你它的工作原理 – monderbcb

-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'; 

这看起来像一个标准的实施gamescategory之间的许多一对多的关系 - 这会正确吗?

+0

您的查询将返回与OP的查询完全相同的结果 – bksi

+0

@bksi是的,但他说他不明白JOIN,所以我的答案。 –

+0

我没有多对多的关系,因为我有game_cat一个表,它具有独特的列与类别ID的游戏,所以它不会重复 – monderbcb

相关问题