sql怎么两个表关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql怎么两个表关联相关的知识,希望对你有一定的参考价值。

现在有A,B两张表,A(a,b,c,d) B(c,e,f),其中,A里会有字段c的多条记录,B里只有c的单条记录
SELECT a ,SUM(b) c,d
FROM A WHERE a IS NOT NULL
另外,通过字段c,可以关联另一个表B
select c,e,f from B
现在要出一个报表,列出 a,sum(b),c,d,e,f

参考技术A select B.c,e,f from A left join B on A.c=B.c
这样就可以了追问

我的where a is not null写哪里

追答

在 后面直接加上 where a is not null 就OK了

追问

具体加到哪里?on 那句后面吗 报错啊

追答

select a,sum(b),A.c,d,e,f from A left join B on A.c=B.c where a is not null

追问

SELECT  A.a,sum(A.b),A.c,B.d,B.e,A.f

FROM A LEFT JOIN  B

ON A.c=B.c where a.a is not null

group by sum(A.b)

ORDER BY b DESC

分组合计不会 谢谢最后一问

追答

具体一点吧~没太明白~按那个分组对哪个求和啊~

追问

按图里第三列比如是A.c字段 求和

本回答被提问者采纳
参考技术B SELECT a,sum(b),c,d,e,f
FROM A, B
WHERE a IS NOT NULL

SQL 如何把两个表相关联的数据一同删除

a为主表,b为子表 子表与主表的ID关联
删除了主表的数据,子表的数据没有删除
如何把两个表相关联的数据一同删除

其实你这个问题最好用数据库本身的外键解决。就是在子表建立指向父表的外键。当删除主表数据时,只要加上delete语句加上 on cascade,所有子表引用的数据就删除了。 参考技术A 删除主-从表的记录可以建立简单存储过程来实现:
CREATE PROCEDURE [存储过程]
(
@Id VARCHAR(50)
)
AS
DELETE [子表] WHERE [关联Id] = @Id
DELETE [主表] WHERE [Id] = @Id
GO

执行方法:EXECUTE [存储过程] @Id追问

存储过程是无效的

追答

怎么会呢?具体信息如何?我刚测试过了,是可以的,其中A表为主表,B表为子表,B表中的A_Id对应A表中的ID,代码如下:
CREATE PROCEDURE [Test_Pro] (@Id VARCHAR(50))
AS
DELETE [A] WHERE [Id] = @Id
DELETE [B] WHERE [A_Id] = @Id
GO
例如要删除A表B表中Id为100000的记录,执行:EXECUTE [Test_Pro] '100000'

本回答被提问者采纳
参考技术B 楼上还有一种方式的。把子表的和主表关联的ID设为外键,再查看外键和主健的关系,在里面的INSERT和UPDATE规范选项里的删除规则设置为层叠,这样删除主表里的数据子数的数据也会跟着删除 参考技术C 已经删除了主表的数据,那就再写一条删字表的sql:
delete from 子表 where 子表.id not in (select id from 主表);
参考技术D delete from b where id in
(select id from a where id in (*,*,*))
delect from a where id in (*,*,*)
ID必需相同

以上是关于sql怎么两个表关联的主要内容,如果未能解决你的问题,请参考以下文章

sql中有关联的两个表,怎么查出一个表中没有对应到另一个表的数据?

SQL怎样合并显示两个没有关联的表

SQL数据库中表与表之间的关联怎么建立

sql 查询 怎么样关联两个数据库的两个表

请问sqlserver中的两个表怎么进行关联

两个表之间关联更新字段