多表嵌套查询语句案例语句详解

该SQL语句涉及多个表的联查,包括port_shares_list(psl)、port_data(pm)、port_config(pc)和port_analysis_mf(pam)。查询的主要目的是计算port_shares_list中各记录的权重(market_value/sum_net_amount),同时过滤特定条件,如日期、交易类型、owner_id与compid。通过LEFT JOIN操作,将所需数据聚合并进行筛选,确保了数据的完整性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql语句

SELECT psl.PORT_ID,psl.SEC_ID,psl.market_value/pm.sum_net_amount AS WEIGHT,psl.market_value AS MKT_VAL,psl.TRADE_TYPE AS TYPE, pam.DEVIATION FROM port_shares_list AS psl 
	LEFT JOIN 
			(SELECT sum(net_amount) AS sum_net_amount FROM port_data WHERE port_id IN (SELECT port_id FROM port_list WHERE owner_id IN (SELECT id FROM auth_user WHERE compid = 7)) 
			AND DATE='2021-04-06') AS pm ON pm.DATE='2021-04-06' 
	LEFT JOIN 
			port_config AS pc ON pc.PORT_ID=psl.PORT_ID AND TYPE='online' AND pc.MARKET IS NOT NULL
	LEFT JOIN 
			port_analysis_mf AS pam ON pam.PORT_ID=psl.PORT_ID AND pam.DATE='2021-04-06' WHERE psl.port_id IN 
				(SELECT port_id FROM port_list WHERE owner_id IN (SELECT id FROM auth_user WHERE compid = 7)) 
				AND psl.DATE = '2021-04-06' AND psl.TRADE_TYPE IN ('B','P','O','F','BS','S','CB','FD')

说明
psl:port_shares_list(主表)
pm:多表联查(port_data,port_list, auth_user)
pc:port_config
pam:port_analysis_mf

psl.market_value/pm.sum_net_amount AS WEIGHT:主表的market_value除以pm查询sum_net_amount值起别名为WEIGHT

第一个LEFT JOIN :从port_data表中查询sum(net_amount)数据,限定条件是port_id;
而port_id数据需要从port_list表中查询,而查询port_id需要限定owner_id条件,owner_id数据又需要从auth_user表中查询,
查询auth_user需要限定条件compid=7
第二个LEFT JOIN : 主要作用是限定条件,需要限制pc表的PORT_ID等于主表的PORT_ID,并且pc表的TYPE需要等于online和MARKET不为NULL
第三个LEFT JOIN : 从pam表中查询DEVIATION数据,和主表关联的限定条件是PORT_ID相等,然后pam表中的DATE=‘2021-04-06’, 在 主表PORT_ID为port_list,auth_user联表查询后的限制数据
然后主表的DATE还要等于’2021-04-06’和TRADE_TYPE在(‘B’,‘P’,‘O’,‘F’,‘BS’,‘S’,‘CB’,‘FD’)这些种类中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值