iT邦幫忙

0

SQL多資料庫SELECT搜尋

sql
匿名 2012-01-16 22:50:4119651 瀏覽

請問如有三個資料庫A、B、C,都在同台DB
要怎樣讓SELECT可以顯示如下
資料庫A 資料庫B 資料庫C
產品甲售價 100 120
產品乙售價 110 80
產品丙售價 60 90
產品丁售價 200

空白無此資料庫無此品號販售資料
同產品各資料庫會同品號

剛自學接觸SQL不久
敬請各位大大指教
謝謝

看更多先前的討論...收起先前的討論...
建議你
先寫出來(以確定你已清楚)
1.Database name
2.Table name
3.Column name
再來想SELECT要怎麼下
可能會比較好
wiseguy iT邦超人 1 級 ‧ 2012-01-17 11:05:34 檢舉
有些新手只會用 GUI tool 拉來點去,這跨三個 DB 的查詢就頗怪異。雖然不是不行,不過會這樣用的機會少之又少 (最有可能是一開始就設計錯誤,只好將錯就錯)。
這位樓主問 SQL 怎麼下,卻沒寫出用哪種 DB 及 schema,應該不會不知道沒 schema 根本無法寫 SQL 吧?
其實光從這句話的描述方式
三個資料庫A、B、C,都在同台DB

就可窺得一二
落寞
外獅佬 iT邦大師 1 級 ‧ 2012-01-17 22:26:49 檢舉
如果是用...ADO.Net Entity...那問題就不大了....毆飛
2
lhs
iT邦研究生 4 級 ‧ 2012-01-17 17:14:04
最佳解答

select price as '資料庫A','' as '資料庫B','' as '資料庫C'
from 資料庫A.dbo.table
union all
select '' as '資料庫A',price as '資料庫B','' as '資料庫C'
from 資料庫B.dbo.table
union all
select '' as '資料庫A','' as '資料庫B',price as '資料庫C'
from 資料庫C.dbo.table
order by 產品

希望對你有所幫助囉!!

匿名 檢舉

SELECT TH004 '品號' , TWH.TH018 'TW單價' , DGH.TH018 'DG單價' , SZH.TH018 'SZ單價'
FROM ( SELECT TH004, 'TW', 0 AS 'DG', 0 AS 'SZ' FROM TW.dbo.PURTH AS TWH --進貨單
WHERE TWG.TG003 = (SELECT MAX(TWTG.TG003)
FROM TWKY.dbo.PURTH AS TWTH
WHERE TWTH.TH004 = TWH.TH004) --取進貨日期為最新的一筆
UNION ALL
SELECT TH004, 0 AS 'TW', 'DG', 0 AS 'SZ' FROM DG.dbo.PURTH AS DGH
WHERE DGG.TG003 = (SELECT MAX(DGTG.TG003)
FROM DG.dbo.PURTH AS DGTH
WHERE DGTH.TH004 = DGH.TH004)
UNION ALL
SELECT TH004, 0 AS 'TW', 0 AS 'DG', 'SZ' FROM SZ.dbo.PURTH AS SZH
WHERE SZG.TG003 = (SELECT MAX(SZTG.TG003)
FROM SZ.dbo.PURTH AS SZTH
WHERE SZTH.TH004 = SZH.TH004) )
ORDER BY TH004
稍微修改了一下 不知哪裡還有問題

4
eugene0919
iT邦新手 5 級 ‧ 2012-01-17 09:39:21

可以用join的方式去整合三個tables的值

2
player
iT邦大師 1 級 ‧ 2012-01-17 21:02:06

Left join 或 Right Join 是橫向串接
Union 是垂直串接

但是
建議你都放在同一個資料庫內的不同資料表裡
因為跨資料庫的效能不是很好
而且衍生的問題也一堆 (如果資料庫還不是放在同一台裡的話)

player提到:
資料庫

真是一語驚醒夢中人驚

沒有人這樣搞的吧
頂多是資料表而已 哪有還故意分資料庫的
這樣搞會有效率才有鬼Orz

0
pantc328
iT邦研究生 1 級 ‧ 2012-01-18 15:30:44

方法百百種
資料大,又切DB 又去 Join..
效能

在前端 分三次Conection 去撈三次
用前端的技術
我.net 用 Linq 把三個串起來就好了
管他橫的,直的,斜的,樹狀..都不是問題

我要發表回答

立即登入回答