免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1188 | 回复: 1
打印 上一主题 下一主题

大哥大姐,请教 左连接问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-20 14:16 |只看该作者 |倒序浏览
有两个表  :  

表  table1:  

id      name  
1        "aa"  
2        "bb"  

表  table2:  
id      attr        adate  
1        "123"      2006-11-17  16:24:09  
1        "123"      2006-11-18  16:24:09  
2        "456"      2006-11-17  16:24:09  


查询语句如下:  

select  a.name,count(c.attr)  as  num  from   
   (table1  a  left  outer  join  table2  b  on  a.id=b.id)  
where  b.adate>='2006-11-17  16:24:09'  and  b.adate<='2006-11-18  16:24:09'  
group  by  a.name  

此时结果是:  
name      num  
1            2  
2              1  

但是如果把语句中的时间改一下:  

select  a.name,count(c.attr)  as  num  from   
   (table1  a  left  outer  join  table2  b  on  a.id=b.id)  
where  b.adate>='2006-11-18  16:24:09'  and  b.adate<='2006-11-18  16:24:09'  
group  by  a.name  

结果是:  
name      num  
1            1  


结果中并没有显示a表中id为2的记录,请问这是为何,如何修改

论坛徽章:
0
2 [报告]
发表于 2006-11-20 16:25 |只看该作者
SQL> select * from test9;

        ID NAME
---------- ----------
         1 aa
         2 bb
         3 cc

SQL> select * from test10;

        ID ATTR       MDATE
---------- ---------- -------------------
         1 123        2006-11-17 16:24:09
         1 123        2006-11-18 16:24:09
         2 456        2006-11-17 16:24:09
         

SQL> select a.name,count(b.attr) from
  2     test9 a left outer join (select * from test10 where mdate>='2006-11-18  16:24:09') b on a.id=b.id
  3     group by a.name;   

  
  NAME       COUNT(B.ATTR)
---------- -------------
aa                     1
bb                     0
cc                     0
  
Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("A"."ID"="TEST10"."ID"(+))
   4 - filter("MDATE"(+)>=TO_DATE('2006-11-18 16:24:09', 'yyyy-mm-dd
              hh24:mi:ss'))
   
           
SQL> select  a.id,a.name as  num  from   
  2     (test9  a  left  outer  join  test10  b  on  a.id=b.id)  
  3  where  b.mdate>='2006-11-18  16:24:09'  and  b.mdate<='2006-11-18  16:24:09';


        ID NUM
---------- ----------
         1 aa
         
Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("A"."ID"="B"."ID")
   2 - filter("B"."MDATE"=TO_DATE('2006-11-18 16:24:09', 'yyyy-mm-dd
              hh24:mi:ss'))


[ 本帖最后由 numenhuang 于 2006-11-20 16:26 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP