2017-04-04 9 views
0

私は、テーブルにジョブ(JobID、Time、DrvNo ...)を持つ「ジョブ」があります。 別のテーブル「JobDetails」(JobFK、PkSequence、IsDestination、PC)があります。 JobsとJobDetailsの間には、1対多の関係があります。別のテーブルからINSERTする(1対多数の関係)

Data in Jobs is as follows: 
Jobs 
================== 
JobID, Time, DrvNO 
================== 
1, 12:30, 123 
2, 13:50, 343 
3, 14:00, 234 

Data in JobDetails as follows: 
JobDetails 
============================================== 
JobFK, PkSequence, IsDestination, PC 
============================================== 
1, 0, 0, AB1 
1, 1, 1, DE1 
2, 0, 0, RT1 
2, 1, 0, DS1 
2, 2, 1, KJ1 
3, 0, 0, YU7 
3, 1, 1, TH1 

私は何をしようとしていることはジョブズに2つの以上の列を挿入し、JobDetailsからピックアップし、目的地を取得することにより、ジョブを投入しようとすることで、これらの2つのテーブルをマージすることです。 SELECT上記

SELECT cj.JobID, cj.Time,cj.DrvNo, j.PC AS Pickup, k.PC AS Dropoff 
FROM Jobs AS cj 
LEFT JOIN JobDetails AS j ON (cj.JobID = j.JobFK AND j.PKSequence = 0) 
LEFT JOIN JobDetails AS k ON (cj.JobID = k.JobFK AND k.IsDestination= 1) 

ザ・正常に動作しますが、どのようにデータを既存のテーブル(ジョブ)を更新/挿入するには、次のように次のように

Jobs 
================== 
JobID, Time, DrvNO, Pickup, Dropoff 
================== 
1, 12:30, 123, AB1, DE1 
2, 13:50, 343, RT1, KJ1 
3, 14:00, 234, YU7, TH1 

私は、これのSELECT一部を達成しましたこのクエリから?

何か助けていただければ幸いです。 ありがとう

+0

この行については、「2,1,0、DS1」はどうでしょうか?あなたはそれを排除したいですか? –

+0

はい、無視されます。 PKSequence = 0(Pickupと見なされる)またはIsDestination = 1(Dropoffとみなされる)のいずれかに2つだけ関心があるためです。 – user1001493

答えて

3

ここでは、列を追加して、選択クエリの値で更新するSQLを示します(必要な機能を果たしていると言うので、結合を検証しませんでした)。指定したデータに基づいて推測された、必要に応じて新しい列のタイプを変更することができます。

ALTER TABLE Jobs 
    ADD Pickup VARCHAR(3) 
     ,Dropoff VARCHAR(3) 
; 
GO 

UPDATE cj 
    SET cj.Pickup = j.PC 
     ,cj.Dropoff = k.PC 
FROM Jobs AS cj 
LEFT JOIN JobDetails AS j ON (cj.JobID = j.JobFK AND j.PKSequence = 0) 
LEFT JOIN JobDetails AS k ON (cj.JobID = k.JobFK AND k.IsDestination= 1) 
+0

解決方法Anthony Hancockに感謝します。できます。乾杯。 – user1001493

+0

それはあなたのために働いてうれしい。あなたは私の答えを受け入れることができますか?ありがとう。 –

関連する問題