2017-04-21 8 views
1

私は問題が私の結合内にあると信じていますが、私はそれを修正することができません。 SQLは3行を返しますが、代わりに12行を複製して返します。どんな助けでも大歓迎です!sqlは私の結果を複製しています

SELECT J.JOURNEY_NUMBER, 
    L.DESCRIPTION, 
    L.USE_CODE, 
    J.REAL_START_DATE, 
    J.REAL_END_DATE, 
    S.STOP_ID, 
    SN.WRIN_ID, 
    J.JOURNEY_ID 
FROM PDA_STG.JOURNEY J, 
    PDA_STG.RESTAURANT R, 
    PDA_STG.LOCATION L, 
    PDA_STG.SERIAL_NUMBER SN, 
    PDA_STG.STOP S 
WHERE J.JOURNEY_ID = R.JOURNEY_ID 
AND l.loc_id  = r.rest_loc_id 
AND J.JOURNEY_ID = S.JOURNEY_ID 
AND S.STOP_ID  = SN.STOP_ID 
AND SN.WRIN_ID  = '00768669' 
AND j.dc_loc_id = '994' 
AND J.JOURNEY_ID = '357020' 
AND J.PLANNED_START_DATE < '20-APR-17' 
ORDER BY J.JOURNEY_ID DESC 
+4

あなたの質問には、それらのテーブルのデータがどのようなものか、結果として期待していることを知らせなくてはなりません。私たちにあなたのお手伝いをするためのサンプルをいくつか追加してください。 – Jens

+2

おそらく結合基準を忘れています。私たちはあなたのテーブルを知らないので、言うことはできません。 –

+0

サンプルがないと、クエリに何が問題なのかを判断するのが難しいです。しかし、行が正確に重複している場合は、selectの後にdistinctを入れてください。それは仕事をする必要があります –

答えて

2

参加基準を追加する必要があるため、参加したくないレコードに参加している可能性があります。 (たとえば、シリアル番号が停止すると変更される可能性がある、つまり古いシリアル番号に日付が残っている場合など)、

クエリの欠陥を見つけるにはselect *にアクセスして、実際に選択しているレコードを確認してください。

0

フィードバックをいただきありがとうございます。私はIndia.Rocketが言ったようにして、完璧に機能しました。

サンプルがないと、クエリに何が問題なのかを分かりにくいです。しかし、 行が正確に重複している場合は、selectの後にdistinctを入れてください。 それは仕事をする必要があります - India.Rocket 46分前

+3

そして私がコメントしたように - インドとロケットは同意しました - これは一種の最後の手段です。あなたは間違いを見つけて、それを訂正するべきです。代わりに 'DISTINCT'を混乱させるべきです。 'DISTINCT'は(あなたの場合のように)不適切に書かれたクエリのための指標であり、後でクエリを拡張するときに、パフォーマンス上の問題やその他の問題につながる可能性があります。要約すると、これをしないでください。 –

関連する問題