2014-11-09 4 views
1

다음 쿼리는 애니메이션에서 캐릭터를 음성으로 연기하는 사람의 이름을 반환해야합니다. 그러나 나는 다음과 같은 오류가 발생합니다 :SQL 단일 행 하위 쿼리가 두 개 이상의 행을 반환합니다.

Blockquote ORA-01427: single-row subquery returns more than one row

SELECT P.NAME, 
FROM DBS_PERSON P 
WHERE P.ID = (
    SELECT VA.PERSON_ID 
    FROM DBS_VOICEACTOR VA 
    WHERE VA.PERSON_ID = (
     SELECT AA.PERSON_ID 
     FROM DBS_ACTSAS AA 
     WHERE AA.CHARACTER_ID = (
      SELECT C.ID 
      FROM DBS_CHARACTER C 
      WHERE C.ID = (
       SELECT PI.CHARACTER_ID 
       FROM DBS_PLAYSIN PI 
       WHERE PI.SERIE_ID = (
       SELECT S.ID 
       FROM DBS_SERIE S 
       WHERE S.ID = '1'))))); 

감사합니다 사전에! 대신

WHERE <field_name> = (SELECT ... 

답변

1

사용

WHERE <field_name> IN (SELECT ... 

쿼리에서 변경 5 조건이있다.

UPD 또한 쿼리는 @Dmitry 감사

SELECT P.NAME 
FROM DBS_PERSON P 
    join DBS_ACTSAS AA on P.PERSON_ID = AA.PERSON_ID 
    join DBS_PLAYSIN PI on AA.CHARACTER_ID = PI.CHARACTER_ID 
    join DBS_SERIE S on PI.SERIE_ID = S.ID 
WHERE S.ID = '1'; 
+0

에 해당합니다! – JustMo06

관련 문제