2017-04-04 27 views
0

我有一個表「工作」,其中列(JobID,時間,DrvNo ...)。 我得到了另一個表「JobDetails」(JobFK,PkSequence,IsDestination,PC)。 Jobs和JobDetails之間有一對多的關係。從另一個(一對多關係)INSERT到TABLE

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 

我所試圖做的是在喬布斯將兩列,並試圖通過獲得來自JobDetails的皮卡和目標來填充喬布斯這兩個表合併;像下面這樣:

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部分​​,具體如下:

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) 

以上SELECT工作正常,但如何插入/更新現有的表(職位)與數據從這個查詢?

任何幫助表示讚賞。 謝謝

+0

這行怎麼樣 - '2,1,0,DS1'?你想消除它? –

+0

是的,它被忽略。因爲我們只對2件事感興趣,所以PKSequence = 0(作爲Pickup)或IsDestination = 1(作爲Dropoff)。 – user1001493

回答

3

這裏是SQL添加列,然後用你的select查詢中的值更新它們(沒有驗證連接,因爲你說他們正在爲你想要的工作)。您可以根據需要更改新列的類型,只是基於您的給定數據進行猜測。

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

很高興爲你效勞。你能接受我的答案嗎?謝謝。 –