有重复id的多表查询该怎么做? 我有4个表,每个表里都有ClientID字段,用来记录是哪个客户的记录。表用来记录客户提交的问卷调查,一个表里可以存在一个客户的多张表,也就是说一个表里的ClientID是可以重复的,所以不能用left join关联。现在我要从这四个表中查询满足某些条件的sql语句该怎么写呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比方说:表A fileA fileB ***** ClientID * * ***** 1 * * ***** 1 * * ***** 2表B fileA fileB ***** ClientID * * ****** 1 * * ****** 2 * * * ***** 2表C fileA fileB ***** ClientID * * 1 * * ***** 1 * * ***** 2表D fileA fileB ***** ClientID * * **** 3 * * ***** 1 * * ***** 2也就是说每个表中都有ClientID字段,但每个表里可能有重复的ClientID,如表c有两个“1”,现在我要查询在这四个表中,满足某些条件的总的记录和总的ClientID有多少个,不知道我说清楚没有? 这样?select * from( select fileA,fileB,ClientID from 表a union all select fileA,fileB,ClientID from 表b union all select fileA,fileB,ClientID from 表c union all select fileA,fileB,ClientID from 表d )xwhere …… 谢谢 mengmou()mengmou() ,但是不是这样的哈,各个表的字段都是不一样的,fileA,fileB只是我随便写的用来表示字段的 DaysUpdate表数据: DaysUpdateID CreatedDate ClientID3bf0fdd2-0c4d-4f11-a13f-0359949628c0 2007-07-11 15:15:46.497 1084d68240c-1b7d-4b2a-811b-b079d5554d5c 2007-07-11 15:06:38.107 1085cbf1e37-d776-40a3-a8c9-ee2b866ebc9e 2007-08-08 17:40:17.693 10260d2ca6a-0cbb-4556-b2c5-a23914316552 2007-07-11 16:20:26.090 102640a6fd5-b257-4b44-8e7c-47f853750de6 2007-07-11 15:29:29.793 1077b8f5ddb-3610-460d-ada1-92e272dd6bcf 2007-07-12 09:40:21.497 101880121db-f940-4bcc-81e0-c01f6d022b42 2007-08-08 17:43:01.817 10293cf6582-97cc-4cad-a358-5884266b1ddd 2007-08-08 14:13:17.443 102表Abuse数据abuseID CratedDate ClientID11 2007-07-10 17:12:42.030 10612 2007-07-11 16:08:42.077 10813 2007-07-11 16:09:12.513 10814 2007-07-11 16:09:46.467 10815 2007-07-11 16:10:30.920 11316 2007-07-11 16:16:23.873 9817 2007-07-11 16:18:53.653 107表Trauma 数据 TraumaID CreatedDate ClientID364c7c18-ac01-47cb-9543-087d32952a3a 2007-08-08 17:40:41.693 102412a68a1-ac42-48db-8af7-19b64ed3a395 2007-07-10 17:39:20.217 1064afc36fe-ffff-444b-b1c7-e3fc472df8c8 2007-07-10 17:05:59.920 1065ae085e0-c184-43ee-988b-a79d4a7f84db 2007-07-10 17:20:45.187 10884c5870b-bfdd-410d-97e6-53c475fe2be9 2007-07-11 16:23:36.670 108表BaseLine数据BaseLIneID CreateDate ClientID103 2007-07-10 15:40:57.293 107104 2007-07-12 15:14:10.513 106106 2007-07-12 16:54:33.983 108107 2007-08-08 17:39:46.787 102100 2007-07-10 15:24:09.623 108101 2007-07-10 15:30:34.903 1062445 2007-07-11 16:22:33.793 10820 2007-08-08 17:40:32.333 102我是要根据一些查询条件,查询某个时间段里的合乎条件的记录, 比方说我要查在 2007-2-15到2007-3-5之间 某个字段一=“condition”的所有的记录有多少条啊,我知道如果ClientID是唯一的话,可以用join left 把4个表连起来就可以了 ,但现在有重复的数据就不能join left 做联合查询了,不知道我说明白没有? 这样说吧,比方表A:有这样的数据:字段一 Date ClientIDdd 2007-2-5 2dd 2007-3-5 1dd 2007-8-5 2dd 2007-9-5 3表B字段一 Date ClientIDdd3 2007-2-5 2dd3 2007-3-5 1ded 2007-8-5 2dwd 2007-9-5 2对于这两个表,我想查date 在2007-2-1 到 2007-8-5好的数据,得到的结果应该是:dd 2007-2-5 2 dd3 2007-2-5 2dd 2007-8-5 2 ded 2007-8-5 2 join之前先distinct一下不久没有重复的了? 不是,要产生笛卡尔集,比方说:select * from A g left join B t on g.ClientID=t.ClientID,得到的结果是6 而不是2 怎么解决:sql2005无法连接远程sql2000,登录失败,错误18456 关于索引的疑惑 怎样通过客户机操作服务器上的SQL SERVER中的库和表 请教一个sql语句,让查询的结果集自动编号,谢谢 SQL查询语句问题,急求 各位MSSQL高手,帮我看一下! 请教:一个查询在SQL2005下执行效率比在SQL2000下慢10倍 帮忙解决一个触发器问题:b表的字段Support更新,a表的Supportcount在原来的基础上加1【急】 高分求教sql server 的存储顺序问题。 textbox数据的日期型如何调用 怎样搜索一天内的记录 新手提問:如何創建這樣的觸發器!
* * ***** 1
* * ***** 1
* * ***** 2表B fileA fileB ***** ClientID
* * ****** 1
* * ****** 2
* * * ***** 2表C fileA fileB ***** ClientID
* * 1
* * ***** 1
* * ***** 2表D fileA fileB ***** ClientID
* * **** 3
* * ***** 1
* * ***** 2也就是说每个表中都有ClientID字段,但每个表里可能有重复的ClientID,如表c有两个“1”,
现在我要查询在这四个表中,满足某些条件的总的记录和总的ClientID有多少个,不知道我说清楚没有?
select *
from(
select fileA,fileB,ClientID from 表a union all
select fileA,fileB,ClientID from 表b union all
select fileA,fileB,ClientID from 表c union all
select fileA,fileB,ClientID from 表d
)x
where ……
DaysUpdate表数据:
DaysUpdateID CreatedDate ClientID
3bf0fdd2-0c4d-4f11-a13f-0359949628c0 2007-07-11 15:15:46.497 108
4d68240c-1b7d-4b2a-811b-b079d5554d5c 2007-07-11 15:06:38.107 108
5cbf1e37-d776-40a3-a8c9-ee2b866ebc9e 2007-08-08 17:40:17.693 102
60d2ca6a-0cbb-4556-b2c5-a23914316552 2007-07-11 16:20:26.090 102
640a6fd5-b257-4b44-8e7c-47f853750de6 2007-07-11 15:29:29.793 107
7b8f5ddb-3610-460d-ada1-92e272dd6bcf 2007-07-12 09:40:21.497 101
880121db-f940-4bcc-81e0-c01f6d022b42 2007-08-08 17:43:01.817 102
93cf6582-97cc-4cad-a358-5884266b1ddd 2007-08-08 14:13:17.443 102表Abuse数据
abuseID CratedDate ClientID
11 2007-07-10 17:12:42.030 106
12 2007-07-11 16:08:42.077 108
13 2007-07-11 16:09:12.513 108
14 2007-07-11 16:09:46.467 108
15 2007-07-11 16:10:30.920 113
16 2007-07-11 16:16:23.873 98
17 2007-07-11 16:18:53.653 107表Trauma 数据 TraumaID CreatedDate ClientID
364c7c18-ac01-47cb-9543-087d32952a3a 2007-08-08 17:40:41.693 102
412a68a1-ac42-48db-8af7-19b64ed3a395 2007-07-10 17:39:20.217 106
4afc36fe-ffff-444b-b1c7-e3fc472df8c8 2007-07-10 17:05:59.920 106
5ae085e0-c184-43ee-988b-a79d4a7f84db 2007-07-10 17:20:45.187 108
84c5870b-bfdd-410d-97e6-53c475fe2be9 2007-07-11 16:23:36.670 108表BaseLine数据
BaseLIneID CreateDate ClientID
103 2007-07-10 15:40:57.293 107
104 2007-07-12 15:14:10.513 106
106 2007-07-12 16:54:33.983 108
107 2007-08-08 17:39:46.787 102
100 2007-07-10 15:24:09.623 108
101 2007-07-10 15:30:34.903 106
2445 2007-07-11 16:22:33.793 108
20 2007-08-08 17:40:32.333 102我是要根据一些查询条件,查询某个时间段里的合乎条件的记录,
我知道如果ClientID是唯一的话,可以用join left 把4个表连起来就可以了 ,但现在有重复的数据就不能join left 做联合查询了,不知道我说明白没有?
字段一 Date ClientID
dd 2007-2-5 2
dd 2007-3-5 1
dd 2007-8-5 2
dd 2007-9-5 3表B
字段一 Date ClientID
dd3 2007-2-5 2
dd3 2007-3-5 1
ded 2007-8-5 2
dwd 2007-9-5 2对于这两个表,我想查date 在2007-2-1 到 2007-8-5好的数据,得到的结果应该是:dd 2007-2-5 2 dd3 2007-2-5 2
dd 2007-8-5 2 ded 2007-8-5 2