【发布时间】:2017-12-04 09:25:50
【问题描述】:
我有下表结构。我想编写一个递归 cte 来获得最底部的表格结果。 非常感谢您的帮助。
CREATE TABLE Jobcard (
jobcard_id INT NOT NULL PRIMARY KEY,
jobcard_name varchar(20) NOT NULL,
);
CREATE TABLE Vehicle (
vehicle_id INT NOT NULL PRIMARY KEY,
vehicle_name varchar(20) NOT NULL
);
CREATE TABLE Jobacard_vehicle (
jobcard_id INT NOT NULL,
vehicle_id INT NOT NULL
);
INSERT INTO Jobcard (jobcard_id, jobcard_name) VALUES
(1, 'Job1'),(2, 'Job2'),(3, 'Job3'),
(4, 'Job4'),(5, 'Job5'),(6, 'Job6'),
(7, 'Job7'),(8, 'Job8'),(9, 'Job9');
INSERT INTO Vehicle (vehicle_id, vehicle_name) VALUES
(1, 'Vehicle1'),(2, 'Vehicle2'),(3, 'Vehicle3'),
(4, 'Vehicle4'),(5, 'Vehicle5'),(6, 'Vehicle6');
INSERT INTO Jobacard_vehicle (jobcard_id, vehicle_id) VALUES
(3, 1),(4, 2),(5, 3),
(9, 6),(7, 2),(5, 4),
(8, 4),(6, 1),(3, 5);
jobcard_id, vehicle_id
--------------------------
3 1
4 2
5 3
9 6
7 2
5 4
8 4
6 1
3 5
I want to get this result from Jobacard_vehicle table when I pass the vehicle id as 3 as
车辆 ID 3 拥有工作卡 5 工作卡 5 有车辆 4 再次将车辆 4 称为工作卡 8 是指所有由3或其对应的jobcards车辆引用的jobcard
jobcard_id, vehicle_id
--------------------------
5 3
5 4
8 4
谢谢。
【问题讨论】:
-
嗨..首先我要感谢你用脚本解释这个问题。
-
您是否已经编写了任何脚本来实现此目标?我的意思是你开发的脚本有什么问题吗?
-
嗨朋友,是的,我正在尝试使用这个脚本,;with temp as( SELECT jobcard_id, vehicle_id FROM Jobacard_vehicle b2m WHERE vehicle_id = 3 UNION ALL SELECT bi.jobcard_id ,bi.vehicle_id FROM Jobacard_vehicle bi JOIN temp x ON bi.jobcard_id = x.jobcard_id AND x.vehicle_id bi.vehicle_id ) select * from temp option (maxrecursion 0)
标签: sql sql-server common-table-expression recursive-query