1

Oracle 对以下代码给出错误:

SELECT actor_name, 
       char_name
  FROM zActor AS zAct, 
       zCharacter AS zChar
 WHERE zChar.char_num IN
       (SELECT COUNT(zP.char_num) AS charCount
          FROM zPlay AS zP, 
               zActor AS zAct, 
               zCharacter AS zChar
         WHERE zAct.actor_num = zP.actor_num
           AND zChar.char_num = zP.char_num
      GROUP BY zAct.actor_name
  HAVING COUNT(zP.char_num) > 1);

我不知道为什么,因为我对 oracle 有点陌生,但对 SQL 有很好的掌握。任何帮助表示赞赏。

4

2 回答 2

0

尝试删除表别名中的 As。给 zActor zAct 而不是 zActor AS zAct。对所有表别名执行此操作。

 SELECT actor_name, 
        char_name
  FROM zActor  zAct, 
       zCharacter  zChar
 WHERE zChar.char_num IN
      (SELECT COUNT(zP.char_num) AS charCount
         FROM zPlay  zP, 
              zActor  zAct, 
              zCharacter  zChar
        WHERE zAct.actor_num = zP.actor_num
          AND zChar.char_num = zP.char_num
     GROUP BY zAct.actor_name
 HAVING COUNT(zP.char_num) > 1);

FYR,
techonthenet.com/oracle/alias.php

于 2018-10-29T06:32:03.770 回答
0

这是因为您的子查询和外部查询使用相同的别名 zAct 和 aChar。改个名字就行了

于 2018-10-29T06:10:41.203 回答