关于 select 语句有几个问题



我对select语句有几个问题。
首先,我已经为此select查询规范化了 15 个表。
问题是看不见的,因为现在没有太多数据。
但是,由于我尝试在一个选择查询中处理许多表,因此以后似乎会导致问题。
所以我想再添加几个 select 语句来划分要搜索的表,但我想知道它与一次做有什么不同。
其次,如果我使用join,我将使用outer join。如果我使用外部连接连接多个表,我不确定如何使用left outer joinright outer join
当前创建的选择查询引用 8 个表,并链接了一个连接。也就是说,其余表
在子查询中获取了数据,其余八个表可能使用 join。
如果您能让我知道多个外部连接的方向,我将不胜感激。
让我简要介绍一些当前的选择查询。

select 
a.cal1,a.cal2,a.cal3,...,
(select b.cal1 from b
where a.cal4=b.cal2)
as "bcals",
(select c.cal1 from c
where a.cal5=c.cal2)
as "ccals",
....,
(select e.cal1 from e
where a.caln=e.cal2)
as "ecals",
(select sum(extract(year from age(f.endday,f.startday))
from f
where e.cal1=a.cal1)
as "fcals",
g.cal1,g.cal2,g.cal3,...,
(select h.cal1 from h
where g.cal4=h.cal2)
as "hcals"
from a left outer join g on a.cal1=g.cal5
where a.cal1=?;

结果:

a.cal1|a.cal2|a.cal3|...|hcals
var1  |var2  |var3  |...|varn

在此之后,我想知道如何连接其余的表格。

总结一下

如果一个 select 查询语句
  1. 中需要包含许多表,那么当这个复杂的查询被划分为多个 select 语句时,性能和性能有什么区别?
  2. 如果我们在 select 语句中编写,外部连接应该如何?
  3. 查询有问题吗?

实际上你的代码是正确的,但它看起来非常复杂。人们会发现很难理解它。使用联接可以最大限度地减少代码行,并使其更具可读性。

SELECT 
TBL1.AMOUNT T1,  
TBL2.AMOUNT T2,  
TBL3.AMOUNT T3
FROM TBL1
LEFT JOIN TBL2 ON TBL2.ID = TBL1.ID
LEFT JOIN TBL3 ON TBL3.ID = TBL1.ID

在上面的代码中,有三个表和两个连接。可以轻松理解和调试/进行更改。请尝试为您的代码执行此操作。

最新更新