2010-09-08 45 views
1

我想在我使用的框架中生成一个动态属性,而且我遇到了一些困难..我有两个表加入了多对多的关系(平台,标题和游戏)游戏有两个主键,titleid和platformid在mysql中读取一个复合键

select * from games where CONCAT(platformid,titleid) = 110 

110仅仅是一个例子,但记录不为1的平台和10 titleid存在...

为什么不会那工作?

PS:我知道我可以重写一个where子句(platformid = 1 AND标题= 10),但我的框架而言,这不是一个选项...

编辑查询:固定genreid错误(应该已经titleid,但在我的实际代码,这是正确的......)

编辑2:这是一个场景:

select * where="platforms.id=#game.platformId# AND genres.id=#game.genreId# AND games.id<>#game.id#" 

这是一个场景,当我想找到其他记录比目前选定的...

+1

你确定你需要genreid和不是titleid?我在问,因为你的问题使这有点模糊。 – Petros 2010-09-08 18:39:51

+0

添加了更正,谢谢!并在下面的场景... select * where =“platforms.id =#game.platformId#AND genres.id =#game.genreId#AND games.id <>#game.id#” - 这是一种情况在那里我想选择与平台和流派标准相匹配的东西,排除当前选定的记录... – Mohamad 2010-09-08 18:47:19

回答

4

首先,一个表不能有两个PRIMARY KEY s。你可能是指复合键。

其次,您的查询可以工作,但也可以匹配(platformid, genreid) = (11, 0)

您可以使用元组比较语法(当然,如果你的框架将让你这样做):

SELECT * 
FROM games 
WHERE (platformid, genreid) = (1, 10) 

或做出更复杂的连接:

SELECT * 
FROM games 
WHERE CONCAT_WS(',', platformid, genreid) = '1,10' 
+0

谢谢,虽然我想我会回到在此表中使用ID列...更简单的解决方案... – Mohamad 2010-09-08 20:51:31