※ 引述《kalecgos0616 (.)》之銘言:
: 資料庫是MySQL 5.0.77
: 我現在有兩個資料表:
: table1:
: Id 店面
: Tom A
: Tom B
: 代表Tom有A, B店面
: table2:
: 店面 倉庫
: A C
: A D
: B E
: 代表A店面有C, D倉庫; B店面有E倉庫
: 希望能顯示出下面這樣的結果:
: Id 地點
: Tom A
: Tom B
: Tom C
: Tom D
: Tom E
: 代表Tom擁有以下地點
: 我用這句sql:
: SELECT a.Id, b.Object2 FROM `table1` AS a, `table2` AS b WHERE a.Object =
: b.Object
: 只會顯示
: Id Object2
: 1 C
: 1 D
: 1 E
: 要怎麼要達到我希望的結果呢?
最基本用UNION的寫法是
SELECT Id, 店面 as 地點 FROM table1
WHERE Id='Tom'
UNION
SELECT t1.Id, t2.倉庫 as 地點
FROM table2 t2
JOIN table1 t1 on t2.店面 = t1.店面
WHERE t1.Id = 'Tom'
=======================================
如果有多層遞迴的關係,可以試著用CTE遞迴JOIN
;WITH tb(ID, 地點) as
(
SELECT Id, 店面 FROM table1 WHERE Id = 'TOM'
UNION ALL
SELECT tb.Id, 倉庫 FROM table2
JOIN tb on tb.地點 = table2.店面
WHERE ID = 'Tom'
)SELECT DISTINCT * FROM tb
不過MYSQL好像沒有CTE就是了..
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.249.134.33