CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

请教sql的写法

楼主luxx123()2005-08-03 21:26:47 在 Oracle / 基础和管理 提问

两个表  
  表code  
   
  type(类别)             id(代码)                   name(名称)  
  -------------------------------------------------  
  1                                   1                                     北京  
  1                                   2                                     上海  
  1                                   3                                     广州  
  2                                   1                                     飞机  
  2                                   2                                     火车  
  3                                   1                                     产品1  
  3                                   2                                     产品2  
  3                                   3                                     产品3  
  3                                   4                                     产品4  
   
   
   
  表stock  
  id(流水号)               cpID(产品id)         jtID(交通方式id)       mdID(目的地id)       fhsj(发货时间)  
  ------------------------------------------------------------------------------------  
  000001                         2                                 2                                   1                                   20050801  
  000002                         2                                 1                                   2                                   20050724  
  000003                         4                                 1                                   3                                   20050801  
  000004                         1                                 2                                   2                                   20050803  
   
   
   
  要如何写sql语句才能让stock表中的cpID与code表中lb为3的id相等,jtID与code表中lb为2的id相等,  
  mdID与code表中lb为1的id相等,查询后的显示效果为  
   
  表stock  
  id(流水号)               cpID(产品id)         jtID(交通方式id)       mdID(目的地id)       fhsj(发货时间)  
  ------------------------------------------------------------------------------------  
  000001                         产品2                               火车                           北京                                 20050801  
  000002                         产品2                               飞机                           上海                                 20050724  
  000003                         产品4                               飞机                           广州                                 20050801  
  000004                         产品1                               火车                           上海                                 20050803  
  问题点数:50、回复次数:3Top

1 楼feng2(蜀山风云)回复于 2005-08-04 08:25:02 得分 0

select   stock.id,  
  (select   name   from   code   where   code.id=stock.cpID   and   code.type=3),  
  (select   name   from   code   where   code.id=stock.jtID   and   code.type=2),  
  (select   name   from   code   where   code.id=stock.mdID   and   code.type=1),  
  fhsj  
  from   stock;Top

2 楼feng2(蜀山风云)回复于 2005-08-04 08:30:09 得分 0

SQL>   select   d1   id,  
  (select   a3   from   a   where   a.a2=d.d2   and   a1=3)   cpID,  
  (select   a3   from   a   where   a.a2=d.d3   and   a1=2)   jtID,  
  (select   a3   from   a   where   a.a2=d.d4   and   a1=1)   mdID,  
  d5   fhsj    
  from   d;  
   
  ID                   CPID               JTID               MDID               FHSJ  
  ----------   ----------   ----------   ----------   ----------  
  000001           产品2             火车               北京               20050801  
  000002           产品2             飞机               上海               20050724  
  000003           产品4             飞机               广州               20050803  
  000004           产品1             火车               上海               20050801  
   
  Executed   in   0.016   seconds  
   
  SQL>Top

3 楼duanzilin(寻)回复于 2005-08-04 10:49:37 得分 0

select   a.id,  
                max(case   when   b.id   =   a.cpid   and   b.type   =   3   then   b.name   else   NULL   end)   CPID,  
                max(case   when   b.id   =   a.jtid   and   b.type   =   2   then   b.name   else   NULL   end)   JTID,  
                max(case   when   b.id   =   a.mdid   and   b.type   =   1   then   b.name   else   NULL   end)   MDID,  
                a.fhsj  
  from   stock   a,code   b  
  group   by   a.id,a.FHSJ;  
   
  SQL>    
   
  ID             CPID         JTID         MDID               FHSJ  
  -------   -------   -------   ----------   -----------  
  000001     产品2       火车         北京               2005-8-1  
  000002     产品2       飞机         上海               2005-7-24  
  000003     产品4       飞机         广州               2005-8-1  
  000004     产品1       火车         上海               2005-8-1  
  Top

相关问题

  • SQL写法
  • SQL表写法?
  • sql 语句写法.
  • 有关SQL写法
  • sql语句写法
  • 请教SQL写法
  • sql语句写法
  • SQL语句写法。
  • sql语句写法
  • sql语句- 写法!

关键词

  • 上海
  • code
  • mdid
  • jtid
  • cpid
  • 表
  • 产品
  • 火车
  • 飞机
  • stock

得分解答快速导航

  • 帖主:luxx123

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo