2013-11-22 188 views
0
CREATE TABLE hardware 
(
name  varchar(10), 
ID  serial    PRIMARY KEY NOT NULL 
); 

CREATE TABLE games 
(
name  varchar(100), 
ID  serial     PRIMARY KEY 
); 

CREATE TABLE gameVersion 
(
gameID  integer   REFERENCES games(ID), 
version  integer, 
ID  char(10)  PRIMARY KEY  NOT NULL 
); 

CREATE TABLE versionHardware 
(
hardwareID  integer   REFERENCES hardware(ID), 
versionID  char(10)  REFERENCES gameVersion(ID), 
ID  serial   PRIMARY KEY 
); 

CREATE TABLE cheatCodes 
(
ID  serial   PRIMARY KEY  NOT NULL, 
code  varchar(60), 
gameID  integer   REFERENCES games(ID) 
); 

我如何找到任何可以使用ID爲(5)的硬件進行遊戲的記錄上的cheatCodes數量。使用COUNT的SELECT語句

我試圖

SELECT COUNT(*) 
    FROM cheatCodes, games, gameVersion,hardware, versionHardware 
    WHERE cheatCodes.GameId = games.ID 
    AND gameVersion.gameID = games.ID 
    AND versionHardware.versionID = gameVersion.ID 
    AND hardware.ID = 5; 

但它不給我正確的答案。

+0

你被丟失的組? –

+0

我不認爲小組會幫助我,因爲我正在尋找遊戲的數量。我對嗎? – user2821471

+0

您缺少硬件連接條件。 – tvm

回答

0

嘗試:

SELECT COUNT(DISTINCT cheatCodes.GameId) as CheatCodeCount 
FROM cheatCodes, games, gameVersion,hardware, versionHardware 
WHERE cheatCodes.GameId = games.ID 
AND gameVersion.gameID = games.ID 
AND versionHardware.versionID = gameVersion.ID 
AND versionHardware.hardwareID = hardware.id 
AND hardware.ID = 5; 
+0

男人,你救了我的命,我在這份聲明中全天都是股票,上帝保佑你們所有人 – user2821471

+0

Glad幫助@ user2821471。快樂編碼和上帝保佑。 – Edper

0

請嘗試下面的查詢。硬件表的鏈接丟失, 鏈接。

SELECT COUNT(*) 
    FROM cheatCodes, games, gameVersion,hardware, versionHardware 
    WHERE cheatCodes.GameId = games.ID 
    AND gameVersion.gameID = games.ID 
    AND versionHardware.versionID = gameVersion.ID 
    AND hardware.id = versionHardware.hardwareID  
    AND hardware.ID = 5; 
+0

正確的結果是2,但是我的SELECT給了我38,其中37個是重複值,我用DISTINCT但它沒有幫助你的SELECT給了我莫名其妙的結果7 – user2821471

+0

我在你的查詢中只添加了hardware.id = versionHardware.hardwareID mayb你可以在不同的表格中發佈數據 – Shann