看板 Programming 關於我們 聯絡資訊
SELECT ACT_S, /*Q : 為什麼有些欄位不須指定table前置詞, ex:PD.ACT_S,若是加上前置詞, 會拋錯"PD.ACT_S": invaild identifier*/ PD.ACT_N, /*Q : 又有些欄位一定要加上特定table的前置詞, ex:AD_N,就會拋錯"column ambiguously defined"*/ COST, PD.OG_S, OL_S, OG.OG_NO FROM OG LEFT JOIN OL USING(OG_S) LEFT JOIN PD USING(OL_S) LEFT JOIN AD USING(ACT_S) WHERE PD.OG_S = '20140320A' AND OG_NO = '20130320B' AND OL_S = '20140320C' /*Q: 使用USING()來JOIN table順序上是不是有甚麼特別要求? ex上例 : FROM OG FROM OG LEFT JOIN OL --- LEFT JOIN PD USING(OG_S) | USING(OL_S) LEFT JOIN PD | LEFT JOIN AD USING(OL_S) |OL 的JOIN 移到最後,變成 => USING(ACT_S) LEFT JOIN AD | LEFT JOIN OL USING(ACT_S) | USING(OG_S) <--| 如果改成這樣,會拋錯"column ambiguously defined", 但若是使用 JOIN ON 就不會有錯 */ table內容如下: OG 欄位 => OG_S P.K / INDEX OG_NO INDEX OL 欄位 => OL_S P.K / INDEX OG_S INDEX COST PD 欄位 => PD_S P.K / INDEX OG_S INDEX OL_S ACT_S ACT_N AD 欄位 => ACT_S P.K / INDEX ACT_N 我苦惱了兩天,怎麼樣都看不懂USING JOIN 跟選擇欄位的規則, 拜託版上神手大大們解救 感激不盡 > < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.227.141.182
MOONRAKER:SQL這樣寫真不習慣 118.163.12.174 03/21 18:43
Killercat:我覺得花點力氣導入ORM會比較符合你需求 59.124.251.135 04/07 14:14