将多个SQL代码与多个子查询转换为一个查询

我开始处理多年前用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)Is AND((Table3.event)Like“* 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” )))AS GGG FROM Table1;

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”)))) ))AS SSS FROM Table5;

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

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

有人可以帮我一点这个代码?

非常感谢你,

最好,


如果这:

Table5.field1 Like "3"

真的是怎么你的一些子查询被写入(没有实际的野生字符),你可以通过它改变节省了大量的时间

Table5.field1="3"

链接地址: http://www.djcxy.com/p/94303.html

上一篇: Convert multiple SQL code with multiple subqueries into a single query

下一篇: Select from five tables using php mysql