PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   疑難雜症區 (https://www.pcdvd.com.tw/forumdisplay.php?f=34)
-   -   SQL語法,謝謝! (https://www.pcdvd.com.tw/showthread.php?t=632918)

boaboa 2006-06-30 09:33 PM

引用:
作者mor8
我用的資料庫是sql server
三個資料表分別叫作
產品資料表(產品代號、產品名稱)
預估資料表(廠商代號、產品代號、預估產品數量)
訂單資料表(廠商代號、產品代號、訂單數量)
請問:
我要將此三個資料表合併
寫出一個報表
而報表要有下面這些欄位資料
產品代號、產品名稱、預估產品數量、訂單數量
謝謝

select 產品代號.產品代號,產品資料表.產品名稱,預估資料表.預估產品數量,訂單資料表.訂單數量

from 產品資料表 inner join (預估資料表 inner join 訂單資料表 on 預估資料表.廠商代號=訂單資料表.廠商代號)on產品資料表.產品代號=預估資料表.產品代號





我只教你如何合併..
因為我不是你公司的人
我不知道你要查訊是什麼結果..

合併語法我一陣子沒用了..你試試看吧..

我手邊沒書..也不敢跟你確定正確性..
如果錯誤別怪我喔..

如果可以你把問題和需求說清楚一點..我如果會就幫你一下..

boaboa 2006-06-30 10:10 PM

select 產品代號.產品代號,產品資料表.產品名稱,sum(預估資料表.預估產品數量)as預估產品數量 ,sum(訂單資料表.訂單數量)as實際產品數量

from 產品資料表 inner join (預估資料表 inner join 訂單資料表 on 預估資料表.廠商代號=訂單資料表.廠商代號)on產品資料表.產品代號=預估資料表.產品代號

group by 產品代號.產品代號


這樣呢??(應該是錯的吧..)
我是有點想加 distinct
會的人也出來教一下吧,,

因為小弟也很有興趣...(在等世界盃前的遊戲∼)

Ericchu 2006-06-30 10:15 PM

沒有明確的Table Schema跟報表要呈現的欄位說明,根本就沒辦法下手.... :flash:

要大家幫忙,你還是把需求說的明確點吧.. :think:

穩ㄝ 2006-06-30 10:44 PM

select p.產品代號, p.產品名稱,
(select sum(s.預估產品數量) from 預估資料表 as s where s.產品代號=p.產品代號) as 預估數量,
(select sum(o.訂單數量) from 訂單資料表 as o where o.產品代號=p.產品代號) as 訂單量
from 產品資料表 as p
order by p.產品代號

穩ㄝ 2006-06-30 10:52 PM

搞不懂為什麼又要問key又要問table schema的....以他的問題來說....
即使不知道應該也可以做出來吧....

用group的方式
select p.產品代號, p.產品名稱, sum(s.預估產品數量) as 預估產量, sum(o.訂單數量) as 訂單量
from 產品資料表 p
left outer join 預估資料表 as s on s.產品代號=p.產品代號
left outer join 訂單資料表 as o on o.產品代號=p.產品代號
group by p.產品代號
order by p.產品代號

不用group的方式
select p.產品代號, p.產品名稱,
(select sum(s.預估產品數量) from 預估資料表 as s where s.產品代號=p.產品代號) as 預估數量,
(select sum(o.訂單數量) from 訂單資料表 as o where o.產品代號=p.產品代號) as 訂單量
from 產品資料表 as p
order by p.產品代號

kec 2006-06-30 11:08 PM

引用:
作者mor8
我就是因為不知道
所以才上來問
請教一下吧!
對高手來說
是很容易
對初學者來說
是很難的 :cry:

把問題和Table Schema講清楚,大家才好幫你。像原先並沒有提到“訂單的key是流水號”,大家只能在那兒瞎猜,就算寫出了SQL程式,也不一定能在你的資料庫中正確執行。

就是希望你能早日成為高手,所以才說“SQL留給樓主當習題”。直接給答案,你省事,我也省事,但你就失去了一次學習的機會了。

先讀一下書上sum() 和 group by的說明和範例,想一想資料表間的關連。
如果你覺得三個資料表太複雜,先想如何用兩個資料表做出某個產品的訂單數量,然後如何再加入第三個資料表做出某個產品的預估訂單數量。

Ericchu 2006-06-30 11:35 PM

引用:
作者穩ㄝ
搞不懂為什麼又要問key又要問table schema的....以他的問題來說....
即使不知道應該也可以做出來吧....

用group的方式
select p.產品代號, p.產品名稱, sum(s.預估產品數量) as 預估產量, sum(o.訂單數量) as 訂單量
from 產品資料表 p
left outer join 預估資料表 as s on s.產品代號=p.產品代號
left outer join 訂單資料表 as o on o.產品代號=p.產品代號
group by p.產品代號
order by p.產品代號

不用group的方式
select p.產品代號, p.產品名稱,
(select sum(s.預估產品數量) from 預估資料表 as s where s.產品代號=p.產品代號) as 預估數量,
(select sum(o.訂單數量) from 訂單資料表 as o where o.產品代號=p.產品代號) as 訂單量
from 產品資料表 as p
order by p.產品代號


Table Schema敘述不明確,又沒有ERD或Class Diagram,如何了解這些Entity間的關連?這樣盲目的寫出SQL,說實話猶如大海撈針,矇對了算運氣... :think:

kec 2006-06-30 11:35 PM

引用:
作者穩ㄝ
(恕刪)

用group的方式
select p.產品代號, p.產品名稱, sum(s.預估產品數量) as 預估產量, sum(o.訂單數量) as 訂單量
from 產品資料表 p
left outer join 預估資料表 as s on s.產品代號=p.產品代號
left outer join 訂單資料表 as o on o.產品代號=p.產品代號
group by p.產品代號
order by p.產品代號

我想您可能要為樓主解釋一下為什麼要用 outer join 的原因,樓主大概會對用 outer join 感到困惑。(純是個人推測,如果樓主已經知道用 outer join 的原因,請見諒。)

mor8 2006-07-01 08:58 AM

我是希望產生像下圖一樣的報表
第一個欄位是個key(產品代號)
由於手上沒有公司的資料庫
所以也無法測試
謝謝大家

PS.第三個欄位和第四個欄位,一定要用sum

boaboa 2006-07-01 03:35 PM

select distinct產品代號.產品代號,產品資料表.產品名稱,sum(預估資料表.預估產品數量)as預估產品數量 ,sum(訂單資料表.訂單數量)as實際產品數量

from 產品資料表 inner join (預估資料表 inner join 訂單資料表 on 預估資料表.廠商代號=訂單資料表.廠商代號)on產品資料表.產品代號=預估資料表.產品代號

group by 產品代號.產品代號
order by 產品代號.產品代號


所有的時間均為GMT +8。 現在的時間是09:15 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。