全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2028
推到 Plurk!
推到 Facebook!

從三個關聯的 Table , query 出來的資料重複

答題得分者是:wuabc
whyzn
中階會員


發表:46
回覆:149
積分:54
註冊:2002-06-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-19 23:54:04 IP:218.210.xxx.xxx 訂閱
請先進指導
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-10-20 10:08:09 IP:203.73.xxx.xxx 訂閱
您可能要加上Table3庫號 = Table2庫號
才行.

除非在Table2的 貨號是Primary Key
------
What do we live for if not to make life less difficult for each other?
Louis_H
一般會員


發表:7
回覆:19
積分:10
註冊:2005-10-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-10-20 10:25:05 IP:64.62.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-20 16:02:13 IP:218.210.xxx.xxx 訂閱

===================引 用 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-10-20 18:38:15 IP:61.64.xxx.xxx 訂閱
不要這麼快放棄麼!
你對可能需要在去看一下 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-10-20 23:23:09 IP:203.204.xxx.xxx 訂閱
很明顯的,
在Table2一個貨號存放在一個以上的倉庫,
但Table3又沒有紀錄該貨號存放在哪個倉庫,
所以得到的結過必然失敗,
解決辦法,
唯有在Table3加入庫號,
並以Table3的庫號 貨號對應Table2,
別無他法
Louis_H
一般會員


發表:7
回覆:19
積分:10
註冊:2005-10-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-10-22 11:31:56 IP:64.62.xxx.xxx 未訂閱
若用如下方式
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-10-22 14:00:38 IP:59.124.xxx.xxx 訂閱
 你先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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-26 13:39:18 IP:59.120.xxx.xxx 訂閱
   try  "Inner join","Outer join","left join" and "right join"  ....table2 

系統時間:2024-11-23 3:37:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!