1

次のコードを使用して、多対多のサブクエリを作成しようとしています。

    SELECT e.ep_suragate_pk  FROM episode e 
    JOIN (
      SELECT n.name FROM actor n 
      JOIN episode_actor ea 
      ON n.act_suragate_pk = ea.act_suragate_pk
      ) ep_act 
    ON ep_act.ep_suragate_pk = e.ep_suragate_pk;

ORA-00904: 無効な識別子エラーが発生しますが、すべての列が存在します。

     episode
     -------
     ep_suragate_pk


     episode_actor
     -------------
     ep_suragate_pk
     act_suragate_pk


     actor
     -----
     act_suragate_pk

誰かが私が間違っている場所を理解するのを手伝ってくれるなら、それはありがたいです。ありがとう。

4

4 に答える 4

2

これらすべてのサブクエリは必要ありません

select  e.ep_suragate_pk  
from    episode e  , episode_actor ea , actor n
where   ea.ref_id = e.ep_suragate_pk
and     n.act_suragate_pk = ea.act_suragate_pk
于 2013-05-01T15:34:41.440 に答える
2

内部クエリ

   (
  SELECT n.name FROM actor n 
  JOIN episode_actor ea 
  ON n.act_suragate_pk = ea.act_suragate_pk
  ) ep_act 

結合するための列 p_suragate_pk がありません

  ep_act 
ON ep_act.ep_suragate_pk = e.ep_suragate_pk;

このように変更できます

SELECT e.ep_suragate_pk  FROM episode e 
JOIN (
  SELECT n.name,n.act_suragate_pk FROM actor n 
  JOIN episode_actor ea 
  ON n.act_suragate_pk = ea.act_suragate_pk
  ) ep_act 
ON ep_act.ep_suragate_pk = e.ep_suragate_pk;
于 2013-05-01T09:16:20.733 に答える
1

結合に使用する列が選択されている必要があります。だから試してください:

SELECT e.ep_suragate_pk  FROM episode e 
JOIN (
  SELECT n.name, ref_id FROM actor n 
  JOIN episode_actor ea 
  ON n.act_suragate_pk = ea.act_suragate_pk
  ) ep_act 
ON ep_act.ref_id = e.ep_suragate_pk;
于 2013-05-01T09:20:48.723 に答える