首页 文章

将具有多个子查询的多个SQL代码转换为单个查询

提问于
浏览
0

我开始处理多年前使用ACCESS生成的旧数据库 . 所有查询都是使用ACCESS查询向导设计的,它们似乎非常耗时,我希望提高它们的性能 .

所有查询都依赖于至少三个子查询,我想重写SQL代码将它们转换为单个查询 .

在这里你有一个我正在谈论的例子:

这是主要查询:

SELECT Subquery1.pid,Table4.SIB,Subquery1.event,Subquery1.event_date,Subquery2.GGG,Subquery3.status FROM Subquery1 LEFT JOIN((Table4 LEFT JOIN Subquery2 ON Table4.SIB = Subquery2.SIB)LEFT JOIN Subquery3 ON Table4 . SIB = Subquery3.SIB)ON Subquery1.pid = Table4.PID;

此主查询取决于三个子查询:

Subquery1

SELECT Table2.id,Table2.pid,Table2.npid,Table3.event_date,Table3.event,Table3.notes,Table2.other FROM Table2 INNER JOIN Table3 ON Table2.id = Table3.subject_id WHERE((Table2.pid)不是空的)和((表3.event_date)>#XX / XX / XXXX#)AND((表3.event)像“* AAAA”或(Table3.event)=“BBBB”))ORDER BY Table2.pid, Table3.event_date DESC;

Subquery2

SELECT Table1.SIB,IIf(Table1.GGG like“AAA”,“BBB”,IIf(Table1.GGG Like“CCC”,“BBB”,IIf(Table1.GGG Like“DDD”,“DDD”,“EEE” “)))来自表1的AS GGG;

Subquery3

SELECT Table5.SIB,Table5.PID,IIf(Table5.field1 Like“1”,“ZZZ”,IIf(Table5.field1 Like“2”,“ZZZ”,IIf(Table5.field1 Like“3”,“ZZZ” “,IIf(Table5.field1 Like”4“,”HHH“,IIf(Table5.field1 Like”5“,”HHH“,IIf(Table5.field1 like”6“,”HHH“,”UUU“))) )))来自表5的AS SSS;

这将是提高此查询性能并将所有子查询转换为单个语句的最佳方法 .

我可以处理每个子查询,但我很难将它们连接在一起 .

有人能用这段代码帮我一点吗?

非常感谢你,

最好,

1 回答

  • 0

    如果这:

    Table5.field1 Like "3"

    实际上是如何编写一些子查询(没有实际的狂野字符),你可以通过将其更改为来节省大量时间

    Table5.field1="3"

相关问题