2016-06-02 18 views
1

同じデータベース内の2つのテーブルから2つの異なるカラムを選択するSELECTステートメントを作成したいとします。2つのテーブルのSQL - SELECTステートメント

SELECT TNC301X.DIRIN, NC301B.PATH301 
FROM TNC301X, NC301B 
WHERE TNC301X.EDIPROC like 'P30_' AND NC301B.EDIPROC like 'P30_' 
    AND (LASTENRIN > 0) OR (LF301M > 0) 
    AND (DIRIN NOT LIKE '%saptemp%') 
    AND (DIRIN NOT LIKE '%SAPTEMP%') 
    AND (DIRIN NOT LIKE '%usr%') 
    AND (DIRIN NOT LIKE '%Windows%'); 

DIRIN列とPATH301列の内容を選択したいだけです。

TNC301X.DIRIN   NC301B.PATH301 
\\ABC\DEF\   \\ABC\DEF\ 
\\GHI\JKL\   \\GHI\JKL\ 
\\MNO\PQR\   \\MNO\PQR\ 

文は文法的に正しいように思えるが、出力 ではありません。私が各テーブルのための単一のステートメントを作成するとき、出力は正しいです。テーブルは等しくありません。

SELECT PATH301 
FROM NC301B 
WHERE EDIPROC like 'P30_' 
    AND (LF301M > 0) 
    AND (PATH301 NOT LIKE '%saptemp%') 
    AND (PATH301 NOT LIKE '%SAPTEMP%') 
    AND (PATH301 NOT LIKE '%usr%') 
    AND (PATH301 NOT LIKE '%Windows%'); 

SELECT-PATH301 SELECT-DIRIN

SELECT DIRIN 
FROM TNC301X 
WHERE EDIPROC like 'P30_' 
    AND (LASTENRIN > 0) 
    AND (DIRIN NOT LIKE '%saptemp%') 
    AND (DIRIN NOT LIKE '%SAPTEMP%') 
    AND (DIRIN NOT LIKE '%usr%') 
    AND (DIRIN NOT LIKE '%Windows%'); 

私がやりたいことのすべては、これらのステートメントを組み合わせることであるが、私はどのように知りませんが。

編集:取得しました。

FYI

SELECT DIRIN 
FROM TNC301X 
WHERE EDIPROC like 'P30_' 
AND (DIRIN NOT LIKE '%saptemp%') 
AND (DIRIN NOT LIKE '%SAPTEMP%') 
AND (DIRIN NOT LIKE '%usr%') 
AND (DIRIN NOT LIKE '%Windows%') 
UNION ALL 
SELECT PATH301 
FROM NC301B 
WHERE EDIPROC like 'P30_' 
AND (PATH301 NOT LIKE '%saptemp%') 
AND (PATH301 NOT LIKE '%SAPTEMP%') 
AND (PATH301 NOT LIKE '%usr%') 
AND (PATH301 NOT LIKE '%Windows%'); 
+0

http://www.w3schools.com/sql/default.aspこれをチェックすると、見つけ出すのに役立つたくさんの例があります。あなたが探しているのはJOINだと思います –

+0

申し訳ありません:)私はオラクルのみを使っています。 – rel0aded0ne

答えて

0

Unionあなたが探しているものです。 2つのSelectステートメントを組み合わせるだけです。 あなたのテーブルに重複した結果を見つけることを期待し、あなたがそれらのすべては、あなたの出力に表示したい場合は、どこtable1.id =」のように使用すると、2つのテーブルのIDと一致する必要がある2つのテーブルを結合するためにUnion all More info on w3schools

+0

公式文書ではない別のウェブサイトを指すのではなく、OP質問に固有の例を設定するのはどうですか?また、OPが現在のISO標準に合致しない結合の古い構文と置き換えられた構文を使用しているということに失敗しました。 – BeaglesEnd

2

を使用table2.id '。この場合、私はこれらの2つのテーブルを結合するIDはEDIPROCの列だと思います。私は間違っているかもしれません。

SELECT NC.PATH301,TNC.DIRIN 
FROM (
     SELECT PATH301 
     FROM NC301B 
     WHERE EDIPROC like 'P30_' 
     AND (LF301M > 0) 
     AND (PATH301 NOT LIKE '%saptemp%') 
     AND (PATH301 NOT LIKE '%SAPTEMP%') 
     AND (PATH301 NOT LIKE '%usr%') 
     AND (PATH301 NOT LIKE '%Windows%') 
) NC, 
( 
     SELECT DIRIN 
     FROM TNC301X 
     WHERE EDIPROC like 'P30_' 
     AND (LASTENRIN > 0) 
     AND (DIRIN NOT LIKE '%saptemp%') 
     AND (DIRIN NOT LIKE '%SAPTEMP%') 
     AND (DIRIN NOT LIKE '%usr%') 
     AND (DIRIN NOT LIKE '%Windows%') 
) TNC 
WHERE NC.EDIPROC = TNC.EDIPROC 
+0

このSELECTステートメントは私のためには機能しません。 )AS NC; は、Oracleではサポートされていないようです。 行11のエラー: ORA-00933:SQLコマンドが正しく終了しませんでした。 – rel0aded0ne

+0

申し訳ありません削除することを忘れています。 NCの近く –

+0

Oracleはテーブルエイリアスに「AS」をサポートしていません。派生テーブルの 'AS'を削除する必要があります。 –

関連する問題