[問題] SQL JOIN USING 相關問題

看板Programming作者 (猴吱吱)時間11年前 (2014/03/21 18:03), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
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

03/21 18:43, , 1F
SQL這樣寫真不習慣
03/21 18:43, 1F

04/07 14:14, , 2F
我覺得花點力氣導入ORM會比較符合你需求
04/07 14:14, 2F
文章代碼(AID): #1JB0viFu (Programming)
文章代碼(AID): #1JB0viFu (Programming)