我搜索了一种通过使用数据集作为数据库模拟器来创建查询的方法。数据集包含具有主键列的每个表。它也有外键。 模拟数据库 vb.net
我通过提供键/值列表来搜索创建“位置”部分的方法。
数据集将为空,这是创建查询的指数列表的唯一方法。
样品: 样品:
Table A
colA
和
Table B
colB
colD
通过链接
Table C
colA
colB
和
Table D
colD
我给名单
[colA] 1
[colA] 2
[colA] 3
[colB] 5
[colB] 6
[colD] 8
我想要查询表 A 中包含列表中指定元素的每个项目。
Select *
from TableA
where colA in (1,2,3)
and colA in (
select colA
from TableC
where colB in (5,6)
and colB in (
select colB
from TableB
where colD in (8)
)
)
所以我正在搜索算法来创建查询。像任何查询生成器一样工作。
我可以从任何这些表中获取数据。
这是一个函数
function GetSubQuery(table, list(of keyValue) as string
我的示例要求 TableA。但我可以希望 TableB 或 C 或 D. 具有相同的 id 列表。
情况(模拟)
I want table A,B or D.
I can ask for table A, giving id from colD.
I can ask for table A, giving id from colB.
I can ask for table A, giving id from colA.
I can ask for table A, giving id from colB and colD.
I can ask for table A, giving id from colB and colA.
I can ask for table A, giving id from colB and colD and colA.
I can ask for table B, giving id from colD.
...
我们这里有 18 种可能性。
但我不想查询最大可能性并将其用于每个可能性。我的意思是查询“表 A,从 colB 和 colD 和 colA 给出 id”。如果您只有 colA 的 id,则不应使用。因为它可以在另一个表中有很多数据,你会在不需要的情况下搜索。
算法需要知道,如果你不需要去那里,你不需要。