2012-06-29 73 views
0

想知道是否有人可以請解釋這兩個查詢之間的差異,並建議爲什麼一個工程,另一個不工作。SELECT DISTINCT。請解釋?

這一個工程。給我兩個獨特的GantryRtn值和它們對應的SSD值的記錄。

SELECT DISTINCT GantryRtn as Gantry, ROUND(Field.SSD,1) as SSD 
      FROM Field, PlanSetup, Course, Patient, Radiation 
        WHERE Field.RadiationSer=Radiation.RadiationSer 
         AND Radiation.PlanSetupSer=PlanSetup.PlanSetupSer 
         AND PlanSetup.CourseSer=Course.CourseSer 
         AND Course.PatientSer=Patient.PatientSer 
         AND Patient.PatientId='ZZZ456' 
         AND PlanSetup.PlanSetupId='F T1 R CHEST' 

但是沒有在錶鏈接到包含各領域的純文本名稱的另一個表的主鍵的外鍵。我還想通過拔出這個外鍵RadiationSer來提取該名稱(如果必須,請在單獨的查詢中)。但只要我將RadiationSer放入查詢中,我就失去了我的DISTINCT結果。

SELECT DISTINCT GantryRtn as Gantry, ROUND(Field.SSD,1) as SSD, Field.RadiationSer 
      FROM Field, PlanSetup, Course, Patient, Radiation 
        WHERE Field.RadiationSer=Radiation.RadiationSer 
         AND Radiation.PlanSetupSer=PlanSetup.PlanSetupSer 
         AND PlanSetup.CourseSer=Course.CourseSer 
         AND Course.PatientSer=Patient.PatientSer 
         AND Patient.PatientId='ZZZ456' 
         AND PlanSetup.PlanSetupId='F T1 R CHEST' 

這第二個查詢給了我7條記錄與非明顯GantryRtn值。

爲什麼會發生這種情況?

我已經使用GROUP BY進行了調查,但是這會降低查詢速度,並且似乎將所有GantryRtn的數據庫(記錄數爲100)都拉出來。

感謝 格雷格

+0

[選擇不同於多個字段使用sql](http://stackoverflow.com/q/546804/),[多個列中不同的sql查詢](http://stackoverflow.com/q/1503080 /),[多列DISTINCT](http://stackoverflow.com/q/5804529/) – outis

+0

嗨outis,謝謝,但我不明白爲什麼這些查詢(和我的第一個)工作,但我的第二個不'噸。我已經在第一個查詢中選擇了一個DISTINCT中的多個列。我想了解爲什麼添加另一列導致DISTINCT失敗?所以問題是「爲什麼它不起作用?」而不是「我如何做這項工作?」 – Barbs

回答

3

DISTINCT關鍵字applys到結果集(各領域),而不是僅僅在第一場。

你的情況:

SELECT DISTINCT GantryRtn as Gantry, ROUND(Field.SSD,1) as SSD, Field.RadiationSer 

將返回是不同的(不一樣)的任何記錄時Gantry, SSD, and RadiationSer

所以一起,你可能有7條爲同一Gantry和不同RadiationSer的值。

如果您想首先按不同的Gantry值過濾,則可以使用子查詢和內部聯接來完成該操作,但不知何故,您必須確定要使用哪個RadiationSer值。

+0

感謝您的迴應Miky。好吧,我想我現在明白我是如何誤解DISTINCT關鍵字的。 _RadiationSer_是分配給每個_Field_的唯一值,因此如果有7個字段,則有7個RadiationSers。我想要隔離那些具有不同_GantryRtn_值的RadiationSer,並報告這些獨特字段的SSD。如果我努力爲它構建代碼,我會在這個問題上花費一些時間並在單獨的問題中發佈。 – Barbs

+0

用約5行PHP解決。謝謝你的幫助。 :) – Barbs