如何在 SQLite3 上构建特殊排列
How to build special permutation on SQLite3
我有这个选择:
SELECT modalityID, tagID, name FROM factors
这给了我这个结果:
modalityID tagID name
10 21 Ética
40 26 TESTE
60 45 Contexto Social
我该怎么做才能构建以下排列:
modalityID tagID name ModalityID-B TagID-B Name-B
10 21 Ética 40 26 TESTE
40 26 TESTE 60 45 Contexto Social
10 21 Ética 60 45 Contexto Social
请注意,modalityID 必须 < modalityID-B 并且名称不能重复。
我所需要的只是使用一个 table (因子)的元素生成所有可能的不同排列。换句话说,table "factors" 必须与其自身进行比较。
是否可以在 SQLite3 上创建一个 select 来构建它?
此致
类似这样的东西(未测试):
SELECT A.modalityID, A.tagID, A.name, B.modalityID AS modalityID_B, B.tagID AS tagID_B, B.name AS name_B
FROM factors A, factors B
WHERE modalityID < modalityID_B
您可以使用连接条件为 a.modalityID < b.modalityID 的自连接获得此结果。
Here is a working example using your schema in sqlfiddle
SELECT
a.modalityID 'a.modalityID', a.tagID 'a.tagID', a.name 'a.name',
b.modalityID 'b.modalityID', b.tagID 'b.tagID', b.name 'b.name'
FROM factors a
JOIN factors b ON a.modalityID < b.modalityID
我有这个选择:
SELECT modalityID, tagID, name FROM factors
这给了我这个结果:
modalityID tagID name
10 21 Ética
40 26 TESTE
60 45 Contexto Social
我该怎么做才能构建以下排列:
modalityID tagID name ModalityID-B TagID-B Name-B
10 21 Ética 40 26 TESTE
40 26 TESTE 60 45 Contexto Social
10 21 Ética 60 45 Contexto Social
请注意,modalityID 必须 < modalityID-B 并且名称不能重复。 我所需要的只是使用一个 table (因子)的元素生成所有可能的不同排列。换句话说,table "factors" 必须与其自身进行比较。
是否可以在 SQLite3 上创建一个 select 来构建它?
此致
类似这样的东西(未测试):
SELECT A.modalityID, A.tagID, A.name, B.modalityID AS modalityID_B, B.tagID AS tagID_B, B.name AS name_B
FROM factors A, factors B
WHERE modalityID < modalityID_B
您可以使用连接条件为 a.modalityID < b.modalityID 的自连接获得此结果。
Here is a working example using your schema in sqlfiddle
SELECT
a.modalityID 'a.modalityID', a.tagID 'a.tagID', a.name 'a.name',
b.modalityID 'b.modalityID', b.tagID 'b.tagID', b.name 'b.name'
FROM factors a
JOIN factors b ON a.modalityID < b.modalityID