我跟随表
person: id,name
1, mani
2, senthil
3, jack
4, alan
relation: relname,id1,id2 (id1 and id2 refers to person.id)
rel1, 1,3
rel2, 2,3
rel1, 4,1
我想形成一个查询,它返回一个接一个相关的人的ID。查询应返回:
1
3
2
3
4
1
此处(1,3)
是对,后跟(2,3)
,依此类推。
你能形成这样的疑问吗?
答案 0 :(得分:4)
单向(假设id1,id2
是复合PK以避免重复)
SELECT id
FROM
(
select id1 as id, id1,id2 from relation
union all
select id2 as id, id1,id2 from relation
) T
ORDER BY id1,id2
如果您的RDBMS支持UNPIVOT
,您可以通过表格进行一次扫描来完成此操作。
答案 1 :(得分:0)
select id1 from relation
union
select id2 from relation
(但订单不会是您示例中的订单)。
您还可以遍历这些对并构建一个列表:
// metalanguage
resultSet = executeQuery("select id1, id2 from relation");
List list = new List();
while (resultSet.hasNext()) {
list.add(resultSet.get("id1");
list.add(resultSet.get("id2");
}
答案 2 :(得分:0)
您可以先尝试创建CSV结果列
1,3,2,3,4,1
然后从这个CVS检索行。
此查询的创建取决于您使用的DBMS。
我认为使用一些互联网搜索引擎(amazon,bing,google),我们将能够通过您自己的方式解决这个问题。