2013-11-22 4 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) 인 하드웨어에서 재생할 수있는 모든 게임에 대한 기록에있는 치트 코드 수를 찾는 방법은 무엇입니까? 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

하드웨어에 대한 JOIN 조건이 누락되었습니다. – 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

기쁜 도와주세요 @ 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 만 추가했습니다. 다른 테이블에 데이터를 게시 할 수 있습니다. – Shann