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

DataBase欄位合併顯示問題

缺席
lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-10-29 14:16:14 IP:60.248.xxx.xxx 訂閱
我有各Table A 跟 B
A - 裡面有欄位 SN序號 跟一各欄位叫RECID
B - 是專門紀錄A的RECID的狀況資料
RECID 是以年份 月 日 序號(4碼) 譬如說
今天寫入資料庫RECID就是200710290001
現在有各問題來了
設計這資料庫的工程師當初是寫成
如果再使用中同一筆序號的時候
判斷有兩各不同狀況寫入A時候
在A裡面..就會有...同筆序號不同RECID 兩筆
然後帶入B 也是會有兩筆狀況產生
譬如
序號 RECID 狀況
1 200710290001 壞了 (假設)
1 200710290002 有問題 (假設)
然後B也會有兩筆RECID紀錄不同狀況
接下來我的報表SELECT出來就會相同序號
會有兩筆 唯一就是狀況那各欄位不同而已
今天我想問就是如何寫
才可以把狀況這兩各不同的結果塞在同一格
也就是RECID的 0001 0002
相同KEY是序號1
該如何下手呢??
想破頭了@@
------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-03 16:58:28 IP:222.188.xxx.xxx 訂閱
你的问题好奇怪,数据库设计上不应有这种问题哦。
就算有,这也就是 旧值 新值 的问题,有什么难呢? 你描述的很怪怪
------
====================
我为一切作努力!
Justin Shen

lovemari
中階會員


發表:134
回覆:224
積分:76
註冊:2005-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-05 08:44:37 IP:60.248.xxx.xxx 訂閱
我這樣解釋 你看有無比較清楚些


TABLE A
SN RECID

---------------------------

1 200710290001

1 200710290002
==========分隔線============

TABLE B
RECID STATUS

---------------------------------------------------

200710290001 壞了

200710290002 有問題



下的SQL....
SELECT A.SN,B.STATUS
FROM A,B
WHERE A.RECID = B.REICD
===== 實際出來之後 =====
撈出的資料資料變成兩筆這樣顯示
序號 狀況

--------------------------

1 壞了
1 有問題

======= 希望顯示成為 ======
一筆資料就好...
序號 狀況

--------------------------

1 壞了 有問題

------
Program : Delphi 7
DataBase : Oracle 9i
Client : ClientDataSet
編輯記錄
lovemari 重新編輯於 2007-11-05 08:46:31, 註解 無‧
lovemari 重新編輯於 2007-11-05 08:47:13, 註解 無‧
JustinShen
中階會員


發表:22
回覆:104
積分:80
註冊:2003-09-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-11-08 15:51:16 IP:222.185.xxx.xxx 訂閱
这样的话,用循环程序去处理吧。要不想这样的话,就写个store procedure在服务器端执行。至于有没有这样做的sql语句,好像有个类似联合的语句可以使用(我不确定)。
------
====================
我为一切作努力!
Justin Shen

Louis_H
一般會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-11-08 16:20:06 IP:64.62.xxx.xxx 訂閱
報表的 主 Query 只 Select SN,RECID from A

在 DetailBand.BeforePrint 內
用 另一個 Query2 執行 Select STATUS from B where RECID = 主 Query.RECID

sStatus := '';
While not Query2.eof do
sStatus := sStatus Query2.FieldbyName('STATUS').AsString;
Query2.next;
end;
QRLabel.caption := Status; // 報表上顯示 狀態 的 物件

結果應該就會是:
SN: 1 //Group by 主 Query.SN
Status : 壞了 有問題 // DetailBand 顯示的 QRLabel

carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-11-08 21:32:30 IP:219.84.xxx.xxx 訂閱

如果只有兩筆資料,且不想寫Store Procedure 或不想寫在程式內,可試試底下的SQL,但只限兩筆資料時有效..

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