2013-11-22 2 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) 
); 

Как я могу найти количество чит-кодов в записи для любой игры, в которой могут быть использованы аппаратные средства с идентификатором (5).Использование инструкции SELECT с COUNT

Я попытался

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

У вас отсутствует условие JOIN для оборудования. – tvm

ответ

0

Try:

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

i только добавили в ваш запрос hardware.id = versionHardware.hardwareID. mayb вы можете размещать данные в разных таблицах. – Shann

Смежные вопросы