以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL问题合并  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192686)

--  作者:lin98
--  发布时间:2024/7/12 8:57:00
--  SQL问题合并

SQ-L,如何用SQ-L实现将表1

4的字段:编号,数量

1的字段:编号,数量

2的字段:编号,数量

3的字段:编号,数量

[此贴子已经被作者于2024/7/12 10:04:50编辑过]

--  作者:有点蓝
--  发布时间:2024/7/12 9:25:00
--  
下面是sqlserver的用法,不同数据库,可能语法有差异,自行网上搜索

select a.编号,a.数量 as 数量1,b.数量 as 数量2,c.数量 as 数量3 from 表1 as a inner join 表2 as b on a.编号=b.编号 inner join 表3 as c on a.编号=c.编号

--  作者:lin98
--  发布时间:2024/7/15 9:14:00
--  

INSERT INTO  表4(编号,日期,数量1, 数量2, 数量3)
SELEC-T 
a.编号 as 编号,
a.日期 as 日期,
    a.数量 as 数量1,
    NULL as 数量2, 
    NULL as 数量3   
FROM   表1   as a
UNION ALL
SELEC-T 
b.编号 as 编号,
b.日期 as 日期,
    NULL as 数量1,
    b.数量 as 数量2,
    NULL as 数量3
FROM  表2    as b
UNION ALL
SELEC-T 
c.编号 as 编号,
c.日期 as 日期,
    NULL as 数量1,
    NULL as 数量2,
    c.数量 as 数量3
FROM   表3    as   c;
问题二:在ADO中,上面代码看一个整个?还是要分写?

Dim db = HySq-l.DataBaseFactory.CreateDatabase("myQ") \'
Dim Sq-l = 上面代码
[此贴子已经被作者于2024/7/15 11:54:47编辑过]

--  作者:有点蓝
--  发布时间:2024/7/15 9:31:00
--  
使用inner join,看2楼用法
--  作者:lin98
--  发布时间:2024/7/15 10:16:00
--  
2楼不行,因为三表的数据量不同,内连接,只在查询同存数据,不存在则过滤,达不到需求。
需求是三表合并,是将三表的所有数据合并到表4.如何实现?

--  作者:有点蓝
--  发布时间:2024/7/15 10:27:00
--  
试试

select a.编号,b.数量 as 数量1,c.数量 as 数量2,d.数量 as 数量3 from (select distinct 编号,日期 from (selec编号,日期 from 表1 union all selec编号,日期 from 表2 union all selec编号,日期 from 表3) as a) as a left join 表1 as b on a.编号=b.编号 left join 表2 as c on a.编号=c.编号 left join 表3 as d on a.编号=d.编号


--  作者:lin98
--  发布时间:2024/7/15 10:38:00
--  
出现空值
[此贴子已经被作者于2024/7/15 11:55:21编辑过]

--  作者:有点蓝
--  发布时间:2024/7/15 10:42:00
--  
加上日期

…… as a left join 表1 as b on a.编号=b.编号 and a.日期=b.日期  left join 表2 as c on a.编号=c.编号  and a.日期=c.日期 ……

--  作者:lin98
--  发布时间:2024/7/15 10:56:00
--  
[图一
[此贴子已经被作者于2024/7/15 11:54:19编辑过]

--  作者:有点蓝
--  发布时间:2024/7/15 10:59:00
--  
几个表数据导出发过来测试一下