将多个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"
上一篇: Convert multiple SQL code with multiple subqueries into a single query