SQL语句联表查询

两个表A和B,A表如下:A_idnameitem(项目)need_pay(需付金额)101张三a300102张三b200103李四a500……表B如下:B_idA_idm... 两个表A和B,
A表如下:
A_id name item(项目) need_pay(需付金额)
101 张三 a 300
102 张三 b 200
103 李四 a 500
……

表B如下:
B_id A_id money(已交金额)
201 101 100
202 101 150
203 101 50
204 102 200
……

就是说,A表中定义了需要交费的项目,但每个项目的缴费可以分多次付款。

现在要查找所有符合以下条件的记录:
B表中一个项目下的多次付款总和 不等于 A表所定义的需付金额
结果显示A表的字段
展开
 我来答
大野瘦子
高粉答主

推荐于2019-10-27 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.9万
展开全部

SELECT item,sum(a.need_pay) '需要支付金额',sum(b.paymoney) '已付金额'

FROM A,(SELECT b.A_id,sum(B.money) 'paymoney' FROM B group by B.A_id) b

where A.A_id = b.A_id

GROUP BY A.item

HAVING sum(a.need_pay)<> sum(b.paymoney)

扩展资料:

关于sql语句连表查询

语法

SELECT fields

FROM table1 INNER JOIN table2

ON table1.field1 compopr table2.field1 AND

ON table1.field2 compopr table2.field2 OR

ON table1.field3 compopr table2.field3;

也可以通过如下语法嵌套 JOIN 语句:

SELECT fields

FROM table1 INNER JOIN

(table2 INNER JOIN [( ]table3

[INNER JOIN [( ]tablex [INNER JOIN ...)]

ON table3.field3 compopr tablex.fieldx)]

ON table2.field2 compopr table3.field3)

ON table1.field1 compopr table2.field2;

LEFT JOIN 或 RIGHT JOIN 可以嵌套在 INNER JOIN 之中,但是 INNER JOIN 不能嵌套于 LEFT JOIN 或 RIGHT JOIN 之中。

ZESTRON
2024-09-04 广告
表界面分析在材料科学及化学领域占据核心地位,它深入探索物质表面与界面的微观结构、化学组成及相互作用。通过电商平台射线光电子能谱(电商平台PS)、扫描电子显微镜(SEM)及原子力显微镜(AFM)等先进技术手段,我们Dr. O.K. Wack ... 点击进入详情页
本回答由ZESTRON提供
IT软件甄选
推荐于2017-10-14 · 企业、党政军、教育、医疗、能源、建筑房产软件信息化建设规划,...
IT软件甄选
采纳数:142 获赞数:1553

向TA提问 私信TA
展开全部
sql多表关联查询跟条件查询大同小异,主要是要知道表与表之前的关系很重要;

举例说明:(某数据库中有3张表分别为:userinfo,dep,sex)

userinfo(用户信息表)表中有三个字段分别为:user_di(用户编号),user_name(用户姓名),user_dep(用户部门) 。(关系说明:userinfo表中的user_dep字段和dep表中的dep_id字段为主外键关系,userinfo表中的user_sex字段和sex表中的sex_id字段为主外键关系)

dep(部门表)表中有两个字段分别为:dep_id(部门编号),dep_name(部门名称)。(主键说明:dep_id为主键)

sex(性别表)表中有两个字段分别为:sex_id(性别编号),sex_name(性别名称)。(主键说明:sex_id为主键)

 

一,两张表关键查询

1、在userinfo(用户信息表)中显示每一个用户属于哪一个部门。sql语句为:

select userinfo.user_di,userinfo.user_name,dep_name from userinfo,dep where userinfo.user_dep=dep.dep_id

2、在userinfo(用户信息表)中显示每一个用户的性别。sql语句为:

select userinfo.user_di,userinfo.user_name,sex.sex_name from userinfo,sex where userinfo.user_sex=sex.sex_id

 

二、多张表关键查询

    最初查询出来的userinfo(用户信息表)表中部门和性别都是以数字显示出来的,如果要想在一张表中将部门和性别都用汉字显示出来,需要将三张表同时关联查询才能实现。

 sql语句为:

select userinfo.user_di,userinfo.user_name,dep.dep_name,sex.sex_name from userinfo,dep,sex where userinfo.user_dep=dep.dep_id and userinfo.user_sex=sex.sex_id

(多个条件用and关联)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
spyhost
2015-10-30 · TA获得超过3132个赞
知道小有建树答主
回答量:946
采纳率:90%
帮助的人:103万
展开全部
联表查询一般有内连接、左/右连接、外连接。
内连接:
select * from t1 inner join t2 on t1.id1=t2.id2;
左连接:
select * from t1 left join t2 on t1.id1=t2.id2;
右连接:
select * from t1 right join t2 on t1.id1=t2.id2;
外连接:
select * from t1 outter join t2 on t1.id1=t2.id2;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清影翼
2015-11-25 · TA获得超过326个赞
知道小有建树答主
回答量:483
采纳率:60%
帮助的人:131万
展开全部
--左
select * from tablea as a left join tableb as b on a.ID=b.ID left join tablec as c on a.ID=c.ID where XXXXXXXX
--右
select * from tablea as a right join tableb as b on a.ID=b.ID right join tablec as c on a.ID=c.ID where XXXXXXXX
--内连
select * from tablea as a inner join tableb as b on a.ID=b.ID inner join tablec as c on a.ID=c.ID where XXXXXXXX
select * from tablea as a,tableb as b,tablec as c where a.ID=b.ID and a.ID=c.ID
可以混用 left join right join inner join
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
燕戈雅Sh
2013-01-19
知道答主
回答量:12
采纳率:0%
帮助的人:2.8万
展开全部
  楼上的好像条件判断不对,试下这个
SELECT item,sum(a.need_pay) '需要支付金额',sum(b.paymoney) '已付金额'
  FROM A,(SELECT b.A_id,sum(B.money) 'paymoney' FROM B group by B.A_id) b
  where A.A_id = b.A_id
  GROUP BY A.item
  HAVING sum(a.need_pay)<> sum(b.paymoney)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式