2010-09-08 42 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