作者ThreeDay0905 (三天)
看板Database
标题Re: [SQL ] 同一栏位来自不同资料表不同栏位的资料
时间Sat Sep 25 09:06:06 2010
※ 引述《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