sql子查询

这篇博客展示了如何使用SQL子查询来查询购买特定商品(如'TNT2')的客户信息。首先,从orderitems表中找出包含商品'TNT2'的订单号,然后在orders表中找到对应的客户ID,最后在customers表中获取这些客户的详细信息。此外,还演示了如何计算每个客户的订单数量,通过嵌套子查询实现。这为理解数据库操作和信息检索提供了实例。
摘要由CSDN通过智能技术生成
CREATE table  if not EXISTS customers
(
    `cust_id`        int(200),
    `cust_name`      char(20),
	`cust_address`   char(20),
	`cust_city`      char(20),
	`cust_state`     char(20),
	`cust_zip`       int,
	`cust_country`   char(20),
	`cust_contact`   char(20),
	`cust_email`     char(20)
);
CREATE table  if not EXISTS orderitems
(
    `order_num`        int,
	`order_item`       int,
	`prod_id`          char(20),
	`quantity`         char(10),
	`item_price`       int
);

CREATE table  if not EXISTS orders
(
    `order_num`        int,
	`order_date`       char(20),
	`cust_id`          int
);

insert into customers(cust_id,cust_name,cust_address,cust_city,cust_state,cust_zip,cust_country,cust_contact,cust_email)
     values
	(10001,'xiaotaoCoyote Inc.','200 Maple Lane','Detroit','MI',44444,'USA','Y Lee','ylee@coyote.com'),
    (10002,'Mouse House','333 Fromage Lane','Columbus','OH',43333,'USA','Jerry Mouse','NULL'),
	(10003,'Wascals','1 Sunny Place','Muncie','IN',42222,'USA','Jim Jones','rabbit@coyote.com'),
	(10004,'Yosemite Place','829 Riverside Drive','Phonix','AZ',88888,'USA','Y sam','sam@163.com'),
    (10005,'E Fudd','4545 53rd Street','Chicago','IL',54545,'USA','E Fudd',NULL);
    
insert into orders(order_num,order_date,cust_id)
     values
		 (20005,'2005-09-01',10001),
		 (20006,'2005-09-12',10003),
		 (20007,'2005-09-30',10004),
		 (20008,'2005-10-03',10005),
		 (20009,'2005-10-08',10001);
insert into orderitems(order_num,order_item,prod_id,quantity,item_price)
        values
		(20005,1,'ANV01',10,5.99),
		(20005,2,'ANV02',3,9.99),
		(20005,3,'TNT2',5,10.00),
		(20005,4,'FB',1,10.00),
		(20006,1,'JP2000',1,55.00),
		(20008,1,'FC',50,2.5),
		
		(20009,3,'FB',1,10.00),
		(20009,3,'OL1',1,9.99),
		(20009,3,'SLING',1,4.49),
		(20009,4,'ANV03',1,14.99);

#子查询训练 查找买了商品’TNT2’的顾客信息
#1.在orderitems里找出TNT2的订单号;
#2.在orders里找出第一步找出的订单号的id
#3.在customers中找出第二部对应客户的所有信息

#select order_num FROM orderitems WHERE prod_id='TNT2';

#select cust_id FROM orders WHERE order_num IN(select order_num FROM orderitems WHERE prod_id='TNT2');

#select DISTINCT * from customers WHERE cust_id IN(select cust_id FROM orders WHERE order_num IN(select #order_num FROM orderitems WHERE prod_id='TNT2'));

#子查询用于计算字段 查询每个客户的订单数

#select count(*) as orders1 FROM orders WHERE cust_id = 10001;

#select cust_name,cust_state,(SELECT COUNT(*) FROM orders WHERE orders.cust_id=customers.cust_id) AS ordernums #FROM customers ORDER BY cust_name;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值