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

SQL語法~~不同table帶出不同值

答題得分者是:dyming
monkeyhung
一般會員


發表:51
回覆:55
積分:21
註冊:2006-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-26 17:59:45 IP:203.69.xxx.xxx 訂閱
首先感謝各位大大在百忙之中抽空前來觀看小弟的所發問的問題

小弟目前遇到一個有關SQL語法上的問題

select D.ProdNo,P.Pname from PUR100D D,Prod P where D.ProdNo=P.ProdNo

小弟所下的這句SQL語法目的是就為了要由ProdNo品項代號去不同的table裡帶出其相關的Pname品名出來

而現在是因為我只針對一個table Prod 去做查詢,是沒有問題的

但若我的ProdNo裡包括來自了二個以上不同的table裡的資料時

因為ProdNo 分別有A物料主檔、B物料主檔

而我去select ProdNo 時分別有 A物料主檔、B物料主檔時怎樣才能

若是來自A物料主檔的ProdNo則秀A物料主檔的Pname的品名

若是來自B物料主檔的ProdNo則秀B物料主檔的Pname的品名

那我將要如何下SQL語法呢

不知這樣的表達方法,各位大大看得懂嗎???

Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-26 20:14:17 IP:211.22.xxx.xxx 未訂閱
1.如果是我,我會先將A與B的物料資料庫整合並修改相關程式,因為那種結構是不正常的!
2.整合後很容易就可以從料號找到品名,如果資料要詳盡一點就使用LEFT JOIN語法。
3.不整合的話你的SQL語法勢必要開啟兩個資料表分別查詢,因為A與B之間沒關係,無法JOIN。
===================引 用 monkeyhung 文 章===================
首先感謝各位大大在百忙之中抽空前來觀看小弟的所發問的問題

小弟目前遇到一個有關SQL語法上的問題

select D.ProdNo,P.Pname from PUR100D D,Prod P where D.ProdNo=P.ProdNo

小弟所下的這句SQL語法目的是就為了要由ProdNo品項代號去不同的table裡帶出其相關的Pname品名出來

而現在是因為我只針對一個table Prod 去做查詢,是沒有問題的

但若我的ProdNo裡包括來自了二個以上不同的table裡的資料時

因為ProdNo 分別有A物料主檔、B物料主檔

而我去select ProdNo 時分別有A物料主檔、B物料主檔時怎樣才能

若是來自A物料主檔的ProdNo則秀A物料主檔的Pname的品名

若是來自B物料主檔的ProdNo則秀B物料主檔的Pname的品名

那我將要如何下SQL語法呢

不知這樣的表達方法,各位大大看得懂嗎???

pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-26 20:38:21 IP:61.231.xxx.xxx 未訂閱
資料結構需多一個品名別欄位
dyming
初階會員


發表:0
回覆:11
積分:32
註冊:2003-04-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-26 21:58:18 IP:211.76.xxx.xxx 未訂閱
以 MSSQL 為例

select D.ProdNo, case when isnull(PA.Pname,'')='' then PB.Pname else PA.Pname end as Pname
from PUR100D D
left join ProdA PA on PA.ProdNo=D.ProdNo
left join ProdB PB on PB.ProdNo=D.ProdNo

希望 ProdA, ProdB 的 primary key 都是 ProdNo
monkeyhung
一般會員


發表:51
回覆:55
積分:21
註冊:2006-12-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-27 09:24:51 IP:203.69.xxx.xxx 訂閱
謝謝各位大大的大力幫忙小弟的所提出的問題

關於大大們所提出的方法,小弟將採用dyming大大的方法

因為小弟的A物料主檔、B物料主檔分別為二個主要的成品、原料主檔

因此不太可能將二個資料做整合合併

以下是小弟用dyming大大的方法所拼出來的SQL語法

select D.PONo,D.Seq,D.ProdNo,case when isnull(PA.Pname,'')='' then PB.Pname else PA.Pname end as Pname,
D.NeedQty,D.UnitP,D.ShipDay
from PUR100D D
left join Prod PA on PA.ProdNo=D.ProdNo
left join MAT PB on PB.ProdNo=D.ProdNo
,PUR100M M
where D.PONo in ( select PONo from PUR100M where CorpNO='10001')
and M.PONo=D.PONo
and M.CorpNo=D.CorpNo
and D.CorpNo='10001'
order by D.PONO

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