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

A&B及B&A是同一筆資料,在資料庫應如何判讀呢?

答題得分者是:John Wong
Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-16 16:40:27 IP:61.221.xxx.xxx 未訂閱
Dear All:
我有一個Table其中的二個欄位設計是打理由,但沒有預設理由一要打比較重要的,理由二是次要的,有幾筆資料是這樣子的
理由一 理由二
A字串 B字串
B字串 A字串

在user眼裡看來,這二筆資料是一樣的,但在SQL判讀,這是二筆不一樣的資料,所以造成後面統計有問題
目前我的想法是存到陣列比對
從資料庫LOAD出來後,用迴圈二個欄位交換比對,確定都沒有在陣列裡才視為新資料,再放進去陣列供後面的Record比對
如果有在陣列裡的話,就累加,最後再把陣列資料列出來
看似二筆一樣的資料,但我卻用複雜的程式處理掉(因為我不曉得有沒有SQL語法可以解決這種問題)
想請教看看有沒有人有遇過相同的情況,有不一樣的處理方式呢?
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-18 02:02:18 IP:211.72.xxx.xxx 訂閱
要供統計判斷的欄位,最好用代號,以免人看是類同而稍有差異的兩字串,被程式判為不同. 用代號並於存檔前先排序再存入各欄,就不會有AB及BA兩種狀況了.
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-18 02:02:42 IP:211.72.xxx.xxx 訂閱
要供統計判斷的欄位,最好用代號,以免人看是類同而稍有差異的兩字串,被程式判為不同. 用代號並於存檔前先排序再存入各欄,就不會有AB及BA兩種狀況了.
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-18 08:32:19 IP:61.219.xxx.xxx 未訂閱
SELECT * from TableName WHERE (理由一='A字串' and 理由二='B字串' ) OR (理由一='B字串' and 理由二='A字串' )
if 查有資料 then
// 不做插入動作
else
// 做插入動作

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-18 11:20:54 IP:61.221.xxx.xxx 未訂閱
首先,謝謝二位的回答
關於理由用建檔的方式(及先排過一遍再存檔),其實有想過,後面程式也想要改善,但先決條件要先把資料庫的爛帳清一遍,過了很趕的這段期間,是可以試著整理看看

另外,如果用SQL語法理由比對,程式是可以負責寫迴圈產生SQL(因為理由不只A字串及B字串,GROUP BY好像一、二百種),可以省去後面陣列比對,但,還要試試效能表現部份
John Wong
初階會員


發表:1
回覆:35
積分:32
註冊:2004-09-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-01-28 04:45:34 IP:219.77.xxx.xxx 未訂閱
用SQL的union可以簡單的解決這問題.
select 理由1 F1, 理由2 F2 from T where 理由1 <理由2
union
select 理由2 F1, 理由1 F2 from t where 理由1 >= 理由2

這時無論以人來看或是SQL來看, 都是兩筆內容相同的資料. 這時可以把上面的query當成view或save到一個新的table中, 再對其進行query, 可以用distinct使相同的一組理由只出現一次, 又或用count查看相同的一組理由出次的次數. 實際的做法要視乎所用的database, 以LocalSQL為例, 先把上面旳SQL save 為文字檔rsorting.sql. 之後便可以:
select distinct f1, f2 from 'rsorting.sql'
order by f1, f2
或者
select count(*), f1, f2 from 'rsorting.sql'
group by f1, f2

Sei
一般會員


發表:22
回覆:38
積分:17
註冊:2002-05-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-01-29 20:48:04 IP:59.127.xxx.xxx 未訂閱
謝謝John Wrong的指導,用SQL語法處理後,比陣列快很多很多!
系統時間:2024-05-07 12:00:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!