從三個關聯的 Table , query 出來的資料重複 |
答題得分者是:wuabc
|
whyzn
中階會員 發表:46 回覆:149 積分:54 註冊:2002-06-16 發送簡訊給我 |
請先進指導
Table1 廠區 F1 廠號 F2 庫號 Table2 倉庫 F3 庫號 F4 貨號 Table3 交易 F5 日期 F6 貨號 F7 數量 我用 select F5, F6, F7, F3, F1 from Table1, Table2, Table3 where Table1.F2 = Table2.F3 and Table2.F4 = Table3.F6 結果雖然有對照出 Table1 的 廠號 和 Table2 的 庫號 但是 Table3 的交易資料卻每筆出現兩次 請問哪裡錯了 煩請指導
------
●○○○○○●○○○○○● 竹密不妨水過,山高無礙雲飛 |
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
|
Louis_H
一般會員 發表:7 回覆:19 積分:10 註冊:2005-10-07 發送簡訊給我 |
Table1 廠區 F1 廠號 F2 庫號
Table2 倉庫 F3 庫號 F4 貨號 Table3 交易 F5 日期 F6 貨號 F7 數量 我用 select F5, F6, F7, F3, F1 from Table1, Table2, Table3 where Table1.F2 = Table2.F3 and Table2.F4 = Table3.F6 Select F5,F6,F7,F3,(Select F1 from Table1 where F2 = F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 試試看用 子查詢 的方式 !! 希望對您有所幫助... ^^ |
whyzn
中階會員 發表:46 回覆:149 積分:54 註冊:2002-06-16 發送簡訊給我 |
===================引 用 Louis_H 文 章=================== Table1 廠區 F1 廠號 F2 庫號 Table2 倉庫 F3 庫號 F4 貨號 Table3 交易 F5 日期 F6 貨號 F7 數量 我用 select F5, F6, F7, F3, F1 from Table1, Table2, Table3 where Table1.F2 = Table2.F3 and Table2.F4 = Table3.F6 若用如下方式 Select F5,F6,F7,F3,(Select F1 from Table1 where F2 = F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 F1 會是空值 若改成 Select F5,F6,F7,F3,(Select F1 from Table1, Table2 where Table1.F2 = Table2.F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 則又出現錯誤 single row subquery produced more than one row 沒招數了 ,求救 !!
------
●○○○○○●○○○○○● 竹密不妨水過,山高無礙雲飛 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
不要這麼快放棄麼!
你對可能需要在去看一下 SQL 的所有語法,也許,就會出現可行的組合 在 SQL 上,同一件事,往往有數種解法 或許,你可以試試看 Left Join,也許可以解決 如要資料不重複,還可以加上去除重複資料的語法 盡量使用標準語法,應該不容易遇到不被支援的資料庫 同時,你的思考方向,若改成 Table3 -> Table2 -> Table1 會比較直覺,也比較簡化 如果是 Table1 -> Table2 -> Table3會思考過多,而 Table2 -> Table1, Table2 -> Table3 會讓腦筋打結 祝好運,先自己多想一下,自己想出來,最好 ===================引 用 whyzn 文 章=================== ===================引 用 Louis_H 文 章=================== Table1 廠區 F1 廠號 F2 庫號 Table2 倉庫 F3 庫號 F4 貨號 Table3 交易 F5 日期 F6 貨號 F7 數量 我用 select F5, F6, F7, F3, F1 from Table1, Table2, Table3 where Table1.F2 = Table2.F3 and Table2.F4 = Table3.F6 若用如下方式 Select F5,F6,F7,F3,(Select F1 from Table1 where F2 = F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 F1 會是空值 若改成 Select F5,F6,F7,F3,(Select F1 from Table1, Table2 where Table1.F2 = Table2.F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 則又出現錯誤 single row subquery produced more than one row 沒招數了 ,求救 !! |
wuabc
初階會員 發表:6 回覆:60 積分:33 註冊:2002-10-28 發送簡訊給我 |
|
Louis_H
一般會員 發表:7 回覆:19 積分:10 註冊:2005-10-07 發送簡訊給我 |
若用如下方式
Select F5,F6,F7,F3,(Select F1 from Table1 where F2 = F3) as F1 from Table3,Table2 where Table3.F6 = Table2.F4 F1 會是空值 ------------------------------------- 是否檢查 Table1 中 F1 會是空值的 F2 值正常與否 ? 否則應該有 F3 的值~ 在 Table1 (也就是上述子查詢結果) 應該要有對應的資料才是 Table1 中 F1 對 F2 有口能多對一的情況嗎 ? (即 F1=A1 , F2=AAA1 ; F1=A2 , F2=AAA1 ..... ) |
agogorz
初階會員 發表:9 回覆:34 積分:28 註冊:2005-04-09 發送簡訊給我 |
你先SELECT ALL出來,兩筆一定有不一樣的地方,
這樣才好除錯 ===================引 用 whyzn 文 章=================== 請先進指導 Table1 廠區 F1 廠號 F2 庫號 Table2 倉庫 F3 庫號 F4 貨號 Table3 交易 F5 日期 F6 貨號 F7 數量 我用 select F5, F6, F7, F3, F1 from Table1, Table2, Table3 where Table1.F2 = Table2.F3 and Table2.F4 = Table3.F6 結果雖然有對照出 Table1 的 廠號 和 Table2 的 庫號 但是 Table3 的交易資料卻每筆出現兩次 請問哪裡錯了 煩請指導 |
adamchen
一般會員 發表:4 回覆:3 積分:1 註冊:2007-10-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |