求个SQL语句,大侠帮忙

sunkangta 2011-07-27 01:27:56
现在我有2个表
Table A

ID PO_No Desc
1 100001 ........
2 100002 ........
3 100003 ........
4 100004 ........
5 100005 ........



Table B

ID Inv_No REF_PO
1 00001 100001
2 00002 100002,100003
3 00003 100004,100005

B表中的REF_PO为A表中的PO_No。B表中REF_PO可能有几个A表记录组成(B表REF_PO包含几个A表PO_no),现在我想针对2个表
列出
Inv_No PO_No DESC
就是针对B表的信息,同时列出A表的信息,如何写这个SQL语句啊
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunkangta 2011-07-27
  • 打赏
  • 举报
回复
哈哈,我是新手,有些复杂的就看不懂,谢谢各位大大帮忙,嘿嘿
horizonlyhw 2011-07-27
  • 打赏
  • 举报
回复
他给你写的 只用这句就能执行了

其他的是他给你做的例子 为了你看着方便

SELECT B.id,b.inv_no,a.desc1
FROM A,b
WHERE instr(B.ref_po,a.po_no)>0;

sunkangta 2011-07-27
  • 打赏
  • 举报
回复
我是想能不能用
SELECT Inv_No, PO_No
FROM A, B
WHERE A.PO_No in B.REF_PO
这样的语句啊。


BenChiM888写的太复杂,看不懂啊。。。
BenChiM888 2011-07-27
  • 打赏
  • 举报
回复

--desc 不能做列名
[SYS@myorcl] SQL>WITH A AS(
2 SELECT 1 ID,'10001' po_no, 'aaa' DESC1 FROM dual
3 UNION ALL
4 SELECT 2 ID,'10002' po_no, 'bbb' DESC1 FROM dual
5 UNION ALL
6 SELECT 3 ID,'10003' po_no, 'ccc' DESC1 FROM dual
7 UNION ALL
8 SELECT 4 ID,'10004' po_no, 'ddd' DESC1 FROM dual
9 UNION ALL
10 SELECT 5 ID,'10005' po_no, 'eee' DESC1 FROM dual
11 ),B AS(
12 SELECT 1 ID,'00001' inv_no,'10001' ref_po FROM dual
13 UNION ALL
14 SELECT 2 ID,'00002' inv_no,'10002,10003' ref_po FROM dual
15 UNION ALL
16 SELECT 3 ID,'00003' inv_no,'10004,10005' ref_po FROM dual
17 )SELECT B.id,b.inv_no,a.desc1
18 FROM A,b
19 WHERE instr(B.ref_po,a.po_no)>0;

ID INV_N DES
---------- ----- ---
1 00001 aaa
2 00002 bbb
2 00002 ccc
3 00003 ddd
3 00003 eee
Simple Down 简单下载系统6.2 更新内容及安装更新方法 1 修正上6.1版本首页标题不显示的问题 2 详情页面的关键词和内容摘要可自由填写。如果不填写则默认为标签加上系统设置里面的内容和标题加系统设置里面的内容。 3 修改服务器文件存放方式。文件将按照上传日期存放在根目录下的uploads文件夹下的 year/month/day 里面。 4 伪静态后缀自由选择。设置方式为:root/config/config.php 第60行: $config['url_suffix'] = '.html'; 这样的设置会生产 http://wen.hbdx.cc/view/1.html 这样的路径 $config['url_suffix'] = '.php'; 这样的设置会生产 http://wen.hbdx.cc/view/1.php 这样的路径 $config['url_suffix'] = ''; 这样的设置会生产 http://wen.hbdx.cc/view/1 这样的路径 5 搜索框的回车响应事件。输入关键字后回车即可搜索,与单击搜索按钮功能一样。 6 便签检索功能修改为单一检索方式。原来的方式是叠加。叠加的方式可以实现的功能是通过多个标签来定位资源。但是好像很多人不理解这种方式。 7 加入积分功能。在发布资源的时候可以设置下载此资源需要的积分。不设置默认为0。积分为0表示免费,游客可以直接下载免费资源。非免费得资源需要登录才可以下载。下载时,下载者扣除积分,发布者增加积分。对应新注册的用户,会有一定的初始积分。初始积分有管理员在系统设置中设置。可有积分小于下载积分时不能下载。 8 详情页面加入百度分享插件。百度分享插件,大家可以去了解下,然后有什么好的建议可以提一下。 9 新增音乐试听功能。这个页面会读取所以后缀为mp3的记录。随机播放。播放器使用了HTML5的audio标签,所以不支持audio标签和不支持mp3格式的浏览器将无法使用。 10 新增个人中心功能。个人中心将展示用户最新发布的资源、最新收藏的资源、最近浏览的资源。最大展示条数为30。 11 新增浏览次数的统计。会和下载次数显示在一起。 12 新增下载记录统计。这个没有反应在前台。在积分功能中有使用到。已经下载过的资源再次下载不会再次扣除积分和增加积分。 13 重写注册模块的后台实现。   后续发展: 最近几个月我都在折腾Bootstrap(css框架),因为我想用Bootstrap重写Simple down的前台。 这期间用Bootstrap折腾了几个小程序,当做练手。现在基础的使用已经没有问题了。 下面的计划就是用Bootstrap重写前台。这样做的好处是可以做出更好看的UI,更标准化利于后续发展,兼容性更好,更重要的是为实现在其他终端上的完美显示。 这一次有人提出广告位的问题,我也考虑了一下。其实这个涉及到的工作主要是在前台,所以这一次暂时没有做,等到前台重写后会做的。 还有一个功能就是审核功能。我觉得这个功能很有必要。下个版本会加上。   附言: 另外我想说一下关于伪静态的问题。我对于这个也没有什么研究。 只知道不同的web服务器有不同的设置方法。完美常见的web服务器有Apache IIS Nginx等。 所以你要按照Simple down需要先把伪静态设置好。 Simple down基于CodeIgniter PHP框架,你们可以去CodeIgniter得论坛找一下。 有安装成功的同学请跟我分享一下这方面的经验,我好提供给其他遇到问题的人参考下。 我直接使用的Linux的VPS,安装的是LNMP的集成环境。在新建主机的时候直接选择了WordPress的伪静态规则就可以了。   请使用Simple Down建站,并且有一点数据库的站长和我联系。我可以在加你们链接。也方便其他新用户借鉴和学习。   Simple Down v6.2安装方法 注意:本程序需要伪静态的支持。   全新安装: 1 安装数据库。创建一个新的数据库,然后导入 dist/simple.sql 。 默认管理员账户:admin 密码:123456。 2 设置数据库信息。在 root/config/database.php 中: $db['default']['hostname'] = 'localhost'; //服务器地址 $db['default']['username'] = ''; //MYSQL 用户名 $db['default']['password'] = ''; //MYSQL 密码$db['default']
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
Javashop开发规范V2.2 版本 说明 提交人 V1.0 初稿 定义了包名、异常、事务、和路径的规范 王峰 V2.0 1. 重新整理了命名规范 2. 增加常用命词对照表 王峰 V2.1 1.增加数据库操作的说明 2.增加常用方法介绍 王峰 V2.2 增加关于数据导入导出的说明 王峰 V2.3 增加校验使用说明(5.3章节) 王峰 1 命名规范 1.1 包命 1. 小写字母 2. 以com.enation.javashop开头 3. 组件以com.enation.compoent开头 1.2 类名 一、 action 以Action结尾,如:UserAction 二、 业务类 1.接口: 以I开头,以Manager结尾,如:IUserManager 2.实现类 以Manager结尾,如:UserManager 三、 组件类 以Component结尾,如:ShopEmailComponent 四、 挂件类 以Widget结尾,如:MemberAddressWidget 五、 插件类 以Plugin结尾,如:SendRegMailPlugin 1.3 变量/属性命名规则 1. 全部小写 2. 可用下划线连接 如:username、 userid 1.4 方法命名 1.4.1 Action类 add 到添加页 edit 到修改页 saveAdd 保存添加 saveEdit 保存修改 delete 删除 list 列表 1.4.2 业务类 add 添加 edit 修改 delete 删除 list 列表 get 读取详细 2 数据库开发规范 2.1 数据操作支持类 一、 业务类数据库调用 1.继承于BaseSupport 2.在spring文件中声明parent为baseSupport 3.通过this.baseDaoSupport操作数据库 实际使用的是:com.enation.eop.sdk.database.BaseJdbcDaoSupport 此种操作示例: com.enation.javashop.core.service.impl.BrandManager 注意事项:见【BaseDaoSupport的意义和存在的问题】 二、 直接声明baseDaoSupport操作数据库 在一些挂件类中或某些特殊情况,可以直接需要直接声明baseDaoSupport 此种操作示例: com.enation.javashop.core.service.impl.batchimport.GoodsSpecImporter 注意事项:见【BaseDaoSupport的意义和存在的问题】 2.2 BaseDaoSupport的意义存在的问题 BaseDaoSupport对JdbcDaoSupport进行包装,通过 baseDBRouter 获取表名, 为什么要通过 baseDBRouter 来获取表名呢?Eop机制是支持SAAS(多租户)模式运行的,在SAAS会为每个用户提供如:es_goods__这样的表。 为了保证在单机版和SAAS模式中都运行正常,BaseDaoSupport将过滤sql中的相应表名。 但目前还只能支持简单的单表select、insert、update,对于多表的联合查询或更新不能支持。 在这种情况下,就需要通过 daoSupport(com.enation.framework.database.impl.JdbcDaoSupport)来操作,daoSupport不对sql进行任何更改,这时为了保证兼容saas模式兼容性,就要使用BaseSupport.getTableName(String tablename)方法 或baseDBRouter.getTableName(String tablename);来保证表名的正确。 (够混乱?真心希望出现一位大侠拯救这个状况,使basedaosupport可以处理所有情况的sql) 2.3 实体Bean和数据库表对照 Javahop数据库操作支持,将对象直接保存或修改,如: this.baseDaoSupport.insert("brand", brand); this.baseDaoSupport.update("brand", brand, "brand_id=" + brand.getBrand_id()); 规则为:实体中的属性名和数据库表的字段名相同,如: 对应的数据库字段: 2.4 注解的使用 2.4.1 @NotDbField 在某个实体Bean中,我们可能会有一些属性不对应数据库字段,这时我们需要在相应的 Geter方法中加上@NotDbField注解,以便使数据库机制知道这个字段不转为sql语句,如: private File file; @NotDbField public File getFile() { return file; } 2.4.2 @PrimaryKeyField 在实合格bean和数据库对照过程中,数据库机制需要识别主键,所以需要我们在主键的对应属性的Geter方法中加上@PrimaryKeyFiled注解,如: private Integer brand_id @PrimaryKeyField public Integer getBrand_id() { return brand_id; } 3 数据导入 3.1 导入接口 DBSolutionFactory.dbImport("file:com/enation/javashop/component/coupon/add.xml","es_"); 3.2 数据Xml文件说明 3.2.1 创建表 create tablename
id int 8 name varchar 255
3.2.2 删除表 drop tablename
3.2.3 添加、删除列 alter goods
isgroupbuy int 1 0 isgroup
3.2.4 创建索引 index goods
goodsid
3.2.5 删除索引 unindex goods
goodsid
3.2.6 插入数据 insert es_adcolumn
acid,cname,width,height,atype,disabled 5,'列表页上部横幅','972px','67px',0,'false'
3.2.7 删除数据 暂未支持 3.2.8 更新数据 暂未支持 3.3 数据类型对照表 xml Mysql Oracle SqlServer int int NUMBER smallint int(1) smallint(1) NUMBER(2) int memo text CLOB text datetime datetime TIMESTAMP datetime long bigint NUMBER bigint decimal decimal NUMBER(20,2) decimal 4 数据导出 String[] tables = new String[1]; tables[0] = "es_auth_action"; DBSolutionFactory.dbExport(tables, false, "") 5 常用方法介绍 5.1 上下文获取 参见: http://www.javamall.com.cn/developer_help/index.php/常用方法 5.2 地区联动下拉框 1.如果是在jsp 中: <html:regionselect></html:regionselect> 2.如果是在Freemarker的html中: <#assign RegionSelect= "com.enation.app.base.component.widget.regions.RegionSelectDirective"?new()> <@RegionSelect /> 以上两种方式均支持以下参数: province_id:省id city_id:市id region_id:区id 如果指定上述参数,则默认选中 5.3 客户端校验 EOP自动为应用提供表单校验功能,通过指定form样式名和指定表单项特定属性的方式来完成。 5.3.1 示例 代码示例 [removed] function checkUserName(val){ if(val=='kingapex' ) return true; else return "用户名已存在"; } $.Validator.options={lang:{isrequired:'此项不能为空!'}}; [removed] <form class="validate"> 必须:<input type="text" name="test1" isrequired="true">
整型:<input type="text" name="test2" isrequired="true" dataType="int">
浮点型:<input type="text" name="test3" dataType="float">
邮件:<input type="text" name="test4" isrequired="true" dataType="email">
日期:<input type="text" name="test5" isrequired="true" dataType="date">
电话号码:<input type="text" name="test6" isrequired="true" dataType="tel_num">
手机:<input type="text" name="test7" isrequired="true" dataType="mobile">
邮政编码:<input type="text" name="test8" isrequired="true" dataType="post_code">
网址:<input type="text" name="test9" isrequired="true" dataType="url">
自定义函数:<input type="text" name="test10" isrequired="true" fun="checkUserName">
<input type="submit" value="确定" /> </form> 5.3.2 参数说明: 5.3.2.1 isrequired 为true则为必填项,不指定或指为false则为非必填项。 5.3.2.2 dateType 指定校验特殊类型,支持的类型见下表: 类型 说明 int 整数 float 浮点数 email 邮件格式 date 日期格式 tel_num 电话格式 mobile 手机格式 post_code 邮编 url 网址 5.3.2.3 fun 自定义校验函数,返回真则通过校验,返回假或字串则校验失败,返回的字串会出现在失败提示框中。 5.3.2.4 动态绑定校验函数 通过 setValidator实现 $("#region_id").setValidator(function(){ var value = $("#region_id").val(); if( value=="" || value=="0" ) return "地区信息不完整"; else return true; }); 5.3.2.5 提示器 提示器用于显示校验的结果,如果不指定默认会在校验的控件后面创建一个span做为提示器。 可以通过两种方式指定提示器: 一、在控件中声明tiper属性: <input type="text" name="username" tiper="#name_tiper" /> 注:tiper指定的是jquery的一个选择器表达式。 二、动态指定: $("#region_id").setTiper($("#name_tiper")); 注:此时指定的是jquery对象,而不是一个表达式 5.3.2.6 手动调用: $("#siteForm").checkall(); 6 常用字典对照表 6.1 常用值 名称 值 说明 返回结果 0:失败 1:成功 适用于: 1. 客户端json返回值 2. 服务器端方法返回值 3. 数据库是否的标识值 性别 0:女 1:男 6.2 常用名称 名称 英文 商品 goods 货品 product 规格 spec 订单 order 会员 member 积分 point 购物车 cart 结算 checkout 订单 order 品牌 brand 分类 cat 优惠劵 coupon 支付 payment 团购 groupbuy 虚拟 virtual 发票 receipt 属性 prop 参数 param 标签 tag 地区 region 7 异常 1. 提供统一的异常处理机制 2. 底层级别的类不处理异常,只管向上抛出异常,且统一抛出RuntimeExcepton 8 事务处理 1. 数据库统一使用Srping AOP事务 2. 采用注解方式: 在接口处: @Transactional(propagation = Propagation.isrequired) 9 路径的规范 返回的路径变量最后不带 ‘/’ 如:String path =”user/1”; 使用者: path = path+”/”+myVar; 10 样式/HTML规范 10.1 前台分页

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧