构建基于现有查询的动态查询(或算法)
问题描述:
我有一个任务来构建基于现有查询与用户选择字段的动态查询(或算法)。让我来解释:构建基于现有查询的动态查询(或算法)
可以说我有一个功能
ConstructQuery(字符串inputQuery,字符串[] mandatoryTables,字符串[] userFields)有2个输入参数:
- inputQuery:查询字符串与许多字段和表,联接和那里的条件
- mandatoryTables:强制表
- userFields列表:字段列表,用户在一些网站或桌面应用程序选择
函数将不得不返回带有表和联接的优化查询,这些查询只有在查询成功时才需要。
inputQuery是例如这样的构造:
SELECT
Table1.SomeFieldA,
Table2.SomeFieldB,
Table2.SomeFieldC,
Table3.SomeFieldD
FROM Table1
JOIN Table2 ON Table1.Code = Table2.Code
JOIN Table3 ON Table2.Code = Table3.Code
WHERE Table1.SomeConditionField = "xyz"
userFields是:SomeFieldB,SomeFieldC
mandatoryTables:表1
所以预计查询:
SELECT
Table2.SomeFieldB,
Table2.SomeFieldC
FROM Table1
JOIN Table2 ON Table1.Code = Table2.Code
WHERE Table1.SomeConditionField = "xyz"
我问题是:有没有一种解决这类公关的工具oblems或你们如何解决它?我想二叉树的...
问候, 贾尼
答
这是一些所谓的加盟去除。这是非常困难的。只是解析查询是非平凡的,那么你必须分析语义,考虑什么是唯一键,什么是foreeign键有机会删除一些表。在你的例子中:算法必须知道table3.code是唯一的,并且是table2.code的外键,否则查询不等价。
首先生成正确的查询可能会更容易。这是一些ORM所做的。