数据库 | SQL语言和关系代数汇总篇(*^▽^*)

双重/两个 not exists 嵌套查询 简单分析_两个not exists-CSDN博客

最明白的 not exists 双层嵌套讲解 SQL 查询语句_not exist 嵌套-CSDN博客 

1.

答案:

 


 

2.

 

 答案:


 

3.

 


 

4. 


5.

 

 

 

 

 


6.


 

7.


 


8.

这个SQL查询是从两个表(假设是SPJP)中检索数据的,目的是找到与某个作业(假设是作业编号为'J1')相关的所有产品的名称和它们的总数量。现在,我将逐步解释这个查询。

  1. 子查询

    
    	SELECT Pno, SUM(Qty) TotalQty 
    
    	FROM SPJ 
    
    	WHERE Jno='J1' 
    
    	GROUP BY Pno

这个子查询从SPJ表中选取与作业'J1'相关的所有产品编号(Pno)和它们的数量(Qty)。由于一个产品可能多次出现在SPJ表中(与同一个作业或多个作业关联),所以使用SUM(Qty)来计算每个产品的总数量,并使用GROUP BY Pno来按产品编号分组。

结果集将有两列:Pno(产品编号)和TotalQty(总数量)。

  1. 主查询
    主查询将子查询的结果与P表连接,以获取产品的名称。为此,我们给子查询一个别名X,然后在主查询中通过P.Pno=X.Pno条件将P表和子查询的结果连接起来。

	SELECT P.Pname, X.TotalQty 

	FROM ( 

	SELECT Pno, SUM(Qty) TotalQty 

	FROM SPJ 

	WHERE Jno='J1' 

	GROUP BY Pno 

	) X, P 

	WHERE P.Pno=X.Pno;

注意:

  • 我已经添加了P.前缀到Pname,以确保我们明确知道Pname是来自P表的。

  • 在连接两个表时,我使用了隐式连接(逗号分隔的表名)。但在现代SQL实践中,更推荐使用显式的JOIN语法,因为它更清晰、更易于阅读和维护。以下是使用JOIN的等效查询:


	SELECT P.Pname, X.TotalQty 

	FROM ( 

	SELECT Pno, SUM(Qty) TotalQty 

	FROM SPJ 

	WHERE Jno='J1' 

	GROUP BY Pno 

	) X 

	JOIN P ON P.Pno = X.Pno;


 

9.


 

10.

11.


12.

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值