在许多查询上使用SQL连接

在许多查询上使用SQL连接,sql,plsql,join,Sql,Plsql,Join,我有一个表,它的结构是tablePK,a,b,c,d,e,f,g 我有很多问题想加入: select PK, sum(c) where... JOIN select PK, sum(e) where... JOIN select PK, sum(g) where ... JOIN select PK,a,b,d,f 每个sumc | e | g实际上都是一个 select sum(c|e|g) from .... where... 因为涉及到许多条件,所以并非所有的c | e

我有一个表,它的结构是tablePK,a,b,c,d,e,f,g

我有很多问题想加入:

select PK, sum(c) where...

JOIN

select PK, sum(e) where...

JOIN

select PK, sum(g) where ...

JOIN

 select PK,a,b,d,f
每个sumc | e | g实际上都是一个

select sum(c|e|g) from .... where...
因为涉及到许多条件,所以并非所有的c | e | g都必须添加

这是最好的方法吗?有人建议我用PL/SQL编写它,这是我必须学习的。如果是这样的话,我会这样做,但我不确定上面所示的解决方案有什么问题

编辑 我很确定这是一个加入。这是我想要的

我需要在以下表格中获得一个结果集:

PK, a,b,COMPLEX_SUM_ON_C,d,COMPLEX_SUM_ON_D,f,COMPLEX_DUM_ON_G
所以我想加入许多查询以得到这个结果

每一个复杂的。。。是另一个选择和。。。。这是一张很大的桌子,上面写着

select a,b,(select sum..),d,(select sum...),f,(select sum...)
将产生糟糕的性能,所以我被告知要删除它

我已经编辑了上面的查询


提前谢谢。

我想你的意思是不要加入工会。是否是最佳方式取决于您试图实现的目标。

连接的示例如下:

Select a.col1, b.col2
FROM table1 a, table2 b
WHERE a.key = b.key;
也可以写成:

SELECT a.col1, b.col2
FROM table1 a
INNER JOIN table2 b
ON a.key = b.key;
编辑:

在阅读了对原始问题的重新编辑后,您可能可以使用JOIN。当在多个表中有相关数据时,可以使用联接,或者可以多次指定同一个表。我在Oracle中使用了这两种方法。下面是后一种类型的示例,希望对您有所帮助:

SELECT t1.a, t1.b, t3.sum(c), t2.d, t4.sum(e), t1.f, t5.sum(g)
FROM table1 t1, table1 t2, table1 t3, table1 t4, table1 t5
WHERE  t1.a = 'hello'
AND t2.a = 'world'
AND t3.c = 10
AND t4.e = 20
AND t5.g = 100
GROUP BY t1.a, t1.b, t2.d, t1.f;

这还不是一个定义明确的问题

假设PK是您的主键,即根据定义是唯一的,则

SELECT PK, SUM(c)
FROM tbl
GROUP BY PK
总是和

SELECT PK, c
FROM tbl
因此,分组和聚合是相对没有意义的

在您的预期结果中:

PK, a,b,COMPLEX_SUM_ON_C,d,COMPLEX_SUM_ON_D,f,COMPLEX_DUM_ON_G
C上的复数、D上的复数、G上的复数与PK有什么关系


我们知道a、b、d、f与PK的关系,因为对于每个PK,我们可以识别一个PK,并且只能识别同一行上的a、b、d、f。

您确定这不是union吗?请显示输入表中的样本行和所需的输出。正如其他人所指出的,不清楚你是想加入还是联合。此外,根据数据的实际外观,您的表可能存在严重的设计问题。如果不知道您希望从该查询中得到什么样的结果,则很难回答这个问题。我建议你在这里快速浏览一下:看看这是否真的是你想要的加入。我已经编辑了我的问题。谢谢,但我似乎还不够清楚我的缺点。我重新编辑了我的问题。