【发布时间】:2012-11-14 16:58:48
【问题描述】:
我搜索了一种通过使用数据集作为数据库模拟器来创建查询的方法。 数据集包含具有主键列的每个表。它也有外键。 simulate database 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)
)
)
所以我正在搜索算法来创建查询。像任何查询生成器一样工作。
我可以从任何这些表中获取数据。
函数的this
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,则不应使用。 因为它可以在另一个表中有很多数据,你会在不需要的情况下搜索。
算法需要知道,如果你不需要去那里,你不需要。
【问题讨论】:
-
您的查询是否符合您的要求?目前还不清楚问题是什么。
-
“所以我正在搜索算法来创建查询。就像任何查询生成器一样工作。”。无论我放在我的专栏列表中。算法将创建查询。我不想创造每一种可能的方式。因为算法将用于超过 4 个表。
-
我在问题中添加了很多东西。但这可能让人难以理解。我将对其进行编辑以澄清我的想法。