有沒有一種方法來「分裂」一行到多行?SQLite的「分裂」行成多行
我的問題是,我有邊緣的表,其中patternID是邊緣和sourceStationID和targetStationID是邊緣連接ID的ID:
模式:
patternID | sourceStationID | targetStationID
1|1|2
2|1|6
3|1|3
4|1|4
5|4|6
6|5|6
我也有我可以轉移的集線器表:
集線器:
hubID
4
5
我需要出去恰好經由一個集線器連接站1-> 6的那些數據patternIDs的。因此,查詢的結果應該是:
4
5
我這樣做,通過集線器表模式表連接模式表,並再次所以我得到:
patternID | sourceStationID | targetStationID | patternID | sourceStationID | targetStationID
4 | 1 | 4 | 5 | 4 | 6
我怎麼可以拆分該行分成兩行?
編輯: 這裏是代碼,我使用至今:
select t2a.patternID from
(
select * from `patterns`
join `hubs` on `targetStationID` = `hubID`
where `sourceStationID` = 1
) as t1a
join
(
select * from `patterns`
join `hubs` on `sourceStationID` = `hubID`
where `targetStationID` = 6
) as t2a
on t1a.hubID = t2a.hubID
union
select t1b.patternID from
(
select * from `patterns`
join `hubs` on `targetStationID` = `hubID`
where `sourceStationID` = 1
) as t1b
join
(
select * from `patterns`
join `hubs` on `sourceStationID` = `hubID`
where `targetStationID` = 6
) as t2b
on t1b.hubID = t2b.hubID;
它的工作,但我使用的是相同的兩次選擇。
工作能您發佈查詢以查看您正在選擇的內容,以便我們提供建議的更改。 –
我想你正在尋找的是WITH子句,遞歸statments。在近的例子是:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/cd37dd9f-17c5-4df5-b072-5a9e51d1798d/show-all-children-and-grandchildren-for-parent-hierarchically ?forum = transactsql – user2346536
爲什麼結果4和6?它不應該是4和5嗎?你說他們是模式ID。 – Frazz