2011-02-09 11 views
0

この結合をOracleでは使用できません。それを理解することはできません、どうしてですか?Oracle:この結合の問題点は何ですか?

SELECT E."ci", E."nombre" 
FROM EMPLEADO E 
WHERE E."ci" IN (SELECT E."cisupervisor" FROM EMPLEADO E); 


INNER JOIN empleado ON "ci"= T."ciempleado" 

SELECT E."nombre",E."apellido",P."nombreproy" 
FROM EMPLEADO E, PROYECTO P 
WHERE E."cisupervisor" IN (SELECT E."ci" 
FROM EMPLEADO E, PROYECTO P, TRABAJAEN T 
WHERE E."sexo"='F' AND E."ci"=T."ciempleado" AND T."horas">60 AND T."codproy"=P."codproy" AND P."fechaini"=2010 
); 
+3

は、その1つのクエリですか?それは混乱のように見える、とesp; 3行目 – RichardTheKiwi

+1

あなたの得点にはどのようなものがありますか? – clamchoda

+0

個別に行1-3が有効で、最後の6行も有効です。別のクエリ – RichardTheKiwi

答えて

2

@cyberwikiが正しく述べたように、基本的に2つの個別のクエリに参加しようとしています。

最初の行はセミコロンで終了しているため、行3で終了します。

この部分:あなたはより多くの条件が必要な場合は、あなたが参加した後where句を必要とするので、

INNER JOIN empleado ON "ci"= T."ciempleado" 

は、それ自身の上では動作しません。

この部分の後のすべては、単独でうまく実行される別のクエリです。

this online validatorを試してみてください。以降のすべての行は、クエリ全体が有効ではありませんが、有効なSQL 2003文であることがわかります。

ジョインの仕組みを理解する上でもう少し作業が必要なようです。 2つの個別のクエリに参加することはできません。

私はあなたのクエリを使用して再編成のビットをやったし、それはあなたが探しているものではないかもしれませんが、このバージョンは、通過します:

SELECT E."ci", E."nombre" 
FROM EMPLEADO E 

INNER JOIN empleado ON "ci"= T."ciempleado" 

where E."ci" IN (SELECT E."cisupervisor" FROM EMPLEADO E) and 

(SELECT E."nombre",E."apellido",P."nombreproy" 
FROM EMPLEADO E, PROYECTO P 
WHERE E."cisupervisor" IN (SELECT E."ci" 
FROM EMPLEADO E, PROYECTO P, TRABAJAEN T 
WHERE E."sexo"='F' AND E."ci"=T."ciempleado" AND T."horas">60 AND T."codproy"=P."codproy" AND P."fechaini"=2010 
)); 
+0

では、結合節の直後に 'あいまいな列" ci "が表示されます。 – RichardTheKiwi

関連する問題