Oracle 的复杂奇葩查询要求,求围观!!!!

如图:

  • TableA 表中有三个字段:name 字段的值是含义,value 字段的值是标记,code 字段是用来区分数据类别的
  • TableB表中有两个字段:remark 和 status 都是标记,对应 TableA 表的 value 字段
  • 现在要求把 TableB 表里的这两个字段的含义查出来(只查一次)。 图片说明图片说明

这是我应那奇葩要求写的 sql,当然,是失败

SELECT 
    b.name AS remarkString,
    b.name AS statusString
FROM 
    TableA a
INNER JOIN
    TableB b
ON
    (b.code = 1 AND a.remark = b.value)
OR
    (b.code = 2 AND a.status = b.value)

这个是可以,但不符合要求,查询次数 n 多

 SELECT 
    (SELECT name FROM TableB b WHERE b.code = 1 AND a.remark = b.value) AS remarkString,
    (SELECT name FROM TableB b WHERE b.code = 2 AND a.status = b.value) AS statusString
FROM 
    TableA a

3个回答

SELECT
a.name AS remarkString,
b.name AS statusString
FROM (select name,value from A,B where A.code = 1 and B.remark=A.value) a,(select name,value from A,B where A.code = 2 and B.status
=A.value) b where a.value=b.value;

图片说明

不知道你是不是想达到这种效果。

qq_40574584
六月下起了大雪 我的A是你的TABLE A,B是你的TABLE B
一年多之前 回复

SELECT
a.name AS remarkString,
aa.name AS statusString
FROM
TableB b
left join TableA a on a.value=b.remark and a.code=1
left join TableA aa on aa.value=b.status and aa.code=2

请采纳,谢谢

qq_31165105
欧阳-95 大佬,抱歉,楼上有人提供了类似的方法。。。。。
一年多之前 回复

都没描述清楚,你tableB中又没有code 段,怎么一一对应。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
oracle 奇葩表 奇葩需求 求解答
现在有两张表rn过车记录表(百万条记录)rn 过车ID 设备编号,车道编号,图片路径,过车时间rn字段(GCID,SBBH.CDBH,imgurl, GCSJ )rn车道信息表 CDXX(千条记录)rn (ID SBBH,CDBH) 设备编号是唯一的 一个设备下有多个车道编号rn注:两张表没有建立外键rnrn现在需要 一段时间内 所有车道每个车道取一张图片, 没有记录图片留空rnrn求各位大神指点rn [code=sql]rnSELECT DISTINCT sbbh, cdbh rn FROM GCJLrn WHERE GCSJ >= TO_DATE ('2014-01-15 08:00:00', 'YYYY-MM-DD HH24:MI:SS')rn AND GCSJ <= TO_DATE ('2014-01-15 09:00:00', 'YYYY-MM-DD HH24:MI:SS');rn[/code]rn现在只想到这样去重设备编号和车道编号 但是 去重后其他列不显示 求各位大神指点rnrn车道信息表 Left join 过车记录表 只能通过 sbbh and cdbh 会出现大于 车道信息表 条数的记录rnrn求各位大神指点求各位大神指点求各位大神指点求各位大神指点rnrn
求一条复杂的SQL语句 来人 围观!
进入话题rnrnA表rnrnname time rn张三 2011-01-01 12:10:00rn张三 2011-01-01 12:50:00rn张三 2011-01-01 14:00:00rn张三 2011-01-01 14:10:00rn李四 2011-01-01 12:10:00rn李四 2011-01-01 12:50:00rn李四 2011-01-01 14:00:00rn李四 2011-01-01 14:10:00rnrnB表rnname startTime endTime rnrn要求:查询出近两次的时间 大于半小时的数据 保存在B表rn如上需求的话 如果显示正确 B表应该如下:rnB表rnname startTime endTime rn张三 2011-01-01 12:10:00 2011-01-01 12:50:00rn张三 2011-01-01 12:50:00 2011-01-01 14:00:00rn李四 2011-01-01 12:10:00 2011-01-01 12:50:00rn李四 2011-01-01 12:50:00 2011-01-01 14:00:00rnrnrn求查询A表的SQL语句 B表插入就不用了rn
复杂的oracle语句功能要求
要用oracle的sql实现以下功能:rn要根据表中的某一个字段筛选,但这个筛选值不是唯一的,对应某一各筛选值的数据条数又不是唯一的,我希望根据另外一个字段来对某一个筛选值的数据在进行筛选,最后使返回的数据中一个筛选值只有一条数据与之对应,如果实现?rn我是用这样的语句:rnSELECT idm,name,max(score) where idm in (5,6,7,8,9);rnye也就使我想得到5,6,7,8,9号的最高分,而这些学号在数据库中又有多个成绩,怎么样可以用sql语句实习那?或者使其他的方法,我用的使ado.net,谢谢
Oracle复杂语句查询
显示所有雇员的姓名、工作和薪金,按工作降序排序,而工作相同的按薪金升序排序 select ename,job,sal from emp order by job desc,sal asc; 列出所有CLERK的姓名及其部门名称 select ename,dname from EMP,dept where emp.deptno=dept.deptno and job='CL
ORACLE复杂查询问题
数据如下rnA表rnrn列1 列2 列3rnrn1 2 3rnrn2 3 4 rnrn期望结果rnselect * from table where (列1=1 and 列2 = 2 and 列3=3)or (列1=2 and 列2 = 3 and 列3=4)rnrn请问除了用代码拼接成这样,还有sql可以拼接吗。
oracle表的复杂查询
命名列的别名可以带as,也可以不带as,命名表的别名不能 带as   数据库的引擎在解析sql语句的时候是按照从左到右的顺序进行解析的,所以对于精确匹配条件应该写在左边   *当某个查询语句中有多个查询条件,且其中的一个查询条件中出现了选择类型的语句时,此时该条件要用括号括起来,否则会出错的 eg:查询工资高于500或是岗位为MANAGER的雇员,同时还要满足他们的姓名的首写字母为大写的...
Oracle之复杂查询
实例1:列出薪资高于在部门30工作的所有员工的薪资的员工姓名和薪资,部门名称,部门人数。 -emp 表:姓名,薪资,部门人数; -dept 表:部门名称;第一步:找出30部门的所有雇员的工资,返回多行单列; select sal from emp where deptno=30;第二步:返回多行单列,只能在where子句里面使用子查询(in,any, all),应该使用>all ,找到员
一个复杂ORACLE查询
表ArnBox Position usedrn1 1 1rn1 2 1rn1 3 1rn2 1 1rn2 2 1rn2 3 1rnrn表BrnBox Position actionrn1 1 -rn1 2 -rn2 1 -rn2 3 -rn1 2 +rn1 1 +rn1 1 -rnrnrn查询要求:表A表示初使状态, 表B表示操作历史: -表示used由1变为0,+表示used由0变为1.写一个SQL语句,得出表A现在的状态,也就是经过表B的操作流程后的状态(按照表B顺序操作).
oracle复杂查询
复杂select语句 操作集合 Union和Union All 查询一: select message_title, message_content, send_begin_time   from ap_message am, ap_message_receive mr  where am.message_id = mr.message_id union selec
Oracle复杂查询实验报告
Oracle复杂查询实验报告, 用SQL语句实现下列查询。要求:能用嵌套查询的尽量使用嵌套查询。
oracle复杂查询练习题
帮助初学者快速的掌握Oracle查询相关知识
Oracle中的复杂查询
复杂查询 用这两张雇员表和员工表将为一下案例做演示 1.多表查询 多表查询:多表查询是指基于两个或两个以上的表或者视图的查询。 //查询员工名,工资,以及员工所在部门的名称 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno=a2.deptno; //查询部门编号为10的部门名称,员工名称,工资 select a...
求围观
近日闲的很蛋疼,希望有一个有项目做,而又不嫌弃我是个半桶水的人,带我一起做项目。不用谈什么钱不钱的。免费做。会尽量安要求做事。纯属想学东西之人。 切求带路。。大家顶一个吧。
客户的一个奇葩要求,求帮助。
[img=https://img-bbs.csdn.net/upload/201405/21/1400639995_630987.jpg][/img]rn例如上图中的数据,现要求每一条的余额数据是下面减到上面后的余额如:rn明细项 收入 支出 余额 支出占总支出比rntest 0.00 140.00 -140.00 63.63%rntest 1000.00 60.00 800.00 27.27%rn邮费 0.00 20.00 780.00 9.09%rnrn这样呈现。
求一个复杂的查询
有4个表,ISSUES(用户提交的issue基本信息) , MESSAGES(issue相关的消息) , DOCUMENTS(issue相关的附件), COMMENTS(用户和客服之间的电子邮件交流记录)。rnrn每个issue有0~n个messages, 0~n个documents,0~n个commentsrnrn每个表中都有issue_ID字段,在ISSUE_DB_ISSUE中是主键,在其它三个表中是外键。rnrn我要:在一个页面内显示所有的ISSUE,如果该ISSUE有documents, comments或者message也都显示出来。不考虑效率。rnrn非常感谢!100分献上。
求复杂查询的设计方案
vb.net oledb accessrn一个表中有多个字段,类型有date number text 等。把各字段名绑定到comboxlist中,当选择日期型字段的时候,后面显示起止时间的两个textbox,当选择数字型字段的时候,后面显示comboxlist(>、<、=、等)和textbox;当选择文本型字段的时候,后面显示comboxlist(包含、不包含、等于)和textbox。当然后面要有个连接的comboxlist(and、or)。这样就可以生成复杂的查询条件,最后根据查询条件进行数据库的查询。rnrn求复杂查询的设计方案,如果有原代码给一个不胜感激。rn
求围观 求解决- -
[img=http://hi.csdn.net/attachment/201104/15/8451871_1302865343qj77.jpg][/img]rn使用hibernate连接数据库时候报错。。。rn新问题- -rn[img=http://hi.csdn.net/attachment/201104/15/8451871_13028664724ggq.jpg][/img]
【求围观,求指点迷津】
本人工作一年多了,语言是C#..一直做winform方面的开发;之前在学校学的是ASP.NET web方面的,后又参加过一次培训,也是培训的ASP.NET 方面的,做过一些web的小项目;起初对web开发情有独钟,在我们班的成绩也算拔尖。之后就参加工作了,参加工作后,公司的任务是做winform c/s结构的,那就做呗。一做一年多过去了,现在web开发的技术都快忘光了;js、jquery、CSS+DIV等前端技术更是不太熟悉。现在想转到更是B2C项目组,用的技术是ASP.NET MVC2.0 ,[color=#FF0000]大家觉得我现在需要了解哪些知识?需要补充哪些方面的技能?[/color]PS:C#语言基础包括面向对象基础、数据库方面的技术,自我感觉还是不错的。主要是web的一些技术不太熟悉。rnrnrn求大家不吝赐教,多提建议!谢谢!
oracle 多对多复杂查询问题
两个多对多表A,B rnA rnID1 rnID2 rnB rnID rnNAME rnA.ID1和A.ID2对应B.ID, rn现在要得到: rnA.ID1->B.NAME,A.ID2->B.NAME,怎么写sql,谢谢!
Oracle学习笔记(七)——Oracle表的复杂查询
一、数据分组 1、数据分组——max,min,avg,sum,count 显示所有员工中的最高工资和最低工资 select max(sal),min(sal) from emp; 显示所有员工的平均工资和工资总和 select avg(sal),sum(sal) from emp; 计算员工数量 select count(sal) from emp; 显示工资
求高手做一个复杂查询
有3个表:t_online_information(switch_numport_num,record_time,mac_address,ip_address),rnt_switch_staff_information(switch_num,port_num,staff_station),rnt_staff_information(staff_station,staff_name,cellphone,email,department,floors)rn在页面中要显示rn工位 员工姓名 部门 所在楼层 联系方式 未关机次数 6个字段rn(staff_station)(staff_name)(department)(floors)(cellphone) (需要在SQL语句中定义)rn其中未关机次数是根据表t_online_information来确定,方法:由record_time,mac_address,ip_address3个字段决定,例如某个ip的record_time为2010-6-22 02:00:00,则说明该ip凌晨在线,需要统计该ip一个星期凌晨在线的次数。rn在页面中按照未关机次数的降序显示。感觉难点在:未关机次数没有对应的数据字段,而且与页面显示的其它数据字段不在一个表中,我试了试,count函数只能返回一个值,但我这里好像要统计表t_online_information里所有ip凌晨在线的次数。
求一复杂查询的实现
现有一表如下rnNUM(号码) ZS(总数) WZ(位置) TIME(时间戳) NEIRONG(内容)rn111 3 1 03101050 我想rn111 3 2 03101050 吃rn222 4 4 03101050 人rn111 3 3 03101050 饭rn222 4 2 03101050 是rn111 2 1 03101150 打rn222 4 3 03101050 中国rn222 4 1 03101050 我rn111 2 2 03101150 酱油了rnrn如何做查询才能将分开的句子组合起来,并生成新表 rnNUM(号码) ZS(总数) TIME(时间戳) NEIRONG(内容)rn111 3 03101050 我想 吃 饭rn111 2 03101150 打 酱油了rn222 4 03101050 我 是 中国 人rnrn
求一个复杂查询的解决办法
一个表tblrn字段 a b crn 1 1 arn 1 2 brn 1 3 crn 1 4 drn 2 1 frn 2 2 grn 2 3 hrn 2 4 jrn现知道c字段的两个值z1,z2rn要求查询符合:z1对应的b字段值小于z2对应的b字段值并且a字段值相同rn不知道说清楚了没有,谢谢!rn
求 一条 复杂 的查询 语句
ID Valuern1 90,80,902rn2 902,903,904rn3 90,80,70rn4 902,80,20rn5 590,790,10rnrn得到 Value 值中为 '90'的数据 rn应该得到 1,3记录rnrn
oracle datetime值问题,奇葩,求大神
[img=https://img-bbs.csdn.net/upload/201311/19/1384842415_423617.jpg][/img]rndate型列,导入数据就变成这样了,怎么能更正过来?rn求大神啊
菜鸟 求大神围观
jsp动态表格每一行后面放两个按钮修改和查询,点击按钮的时候执行相应的action怎么弄rn我的代码是rnrn rn rn rn rn rn rn rn rn rn rn rn rn rn rn
“疑难杂症”,求围观
问题1:用c/c++实现这样一个函数:rn void myfun(char* s,double a)rn其中的参数s是一个特殊的字符串——函数表达式,如x*x+x-1,sin(x)*x等,myfun的功能就是rn计算这个函数表达式在x=a点的函数值并输出。rnrn问题2:使用c/c++定义数组时(如int a[100])中括号里面必须用常量表达式,rn这样在处理未知规模的一组数时就必须定义一个足够大的数组,不仅造成资源浪费,rn而且在难以确定要处理的数据规模的情况下会降低程序的可靠性。rn如何才能灵活控制数组规模,实现需要多少就用多少呢?rn如我要用一个规模刚刚好的数组顺序储存fibonacci数列的所有不大于1000000的项.rnrn
SSH,求围观啊
本人刚毕业正在找工作,感觉总是挂在SSH框架上,面试官叫谈谈SSH,都不懂说些什么,请我大家,我该怎么回答的,它们的优缺点又是什么呢??
sql server !求围观!
数据库设计如下:rnrnrn 公司表:rnrnrn 公司编号 公司名称 rnrn 1 北京公司 rn 2 上海公司rn 3 广州公司rnrnrn 招聘表:rnrn 编号 公司编号 招聘岗位rnrn 1 1 工人rn 2 1 主任rn 3 2 程序员rn 4 2 经理rn 5 3 销售rn 6 4 客服rn rn 要的效果:rn rn 公司名称 招聘岗位rn rn 北京公司 工人|主任|rn 上海公司 程序员|经理rn 广州公司 销售|客服|rn
求各位站长围观
小弟想申请一个带数据库的免费空间练练手,各位如果知道的,还望推荐一个,万分感谢
求大牛围观
公司的框架,启动的时候打印了一堆这东西,我找了半天也没找到在哪个地方设置的,rn这也不是log4j的日志级别设置问题。求大牛支招,怎么把这些打印信息去掉,这在tomcate中rn看着太别扭了。满屏晃呀![img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/11.gif][/img]rnrnrnrn执行时间:08:15:55,562|执行SQL:8|处理结果集:4|sql:select d.base_user_role_id,wm_concat(d.org_id) orgData from base_user_role r, base_user_role_data d where r.base_user_role_id = d.base_user_role_id and r.user_role_state =1 and d.data_state =1 group by d.base_user_role_idrn执行时间:08:15:55,562|执行SQL:8|处理结果集:15|sql:select d.base_user_role_id,wm_concat(d.org_id) orgData from base_user_role r, base_user_role_data d where r.base_user_role_id = d.base_user_role_id and r.user_role_state =1 and d.data_state =1 group by d.base_user_role_idrn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10035,10036,10032rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10035,10036,10032rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10163rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10163rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10032,10048,10042,10046,10034,10041,10043,10040rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10032,10048,10042,10046,10034,10041,10043,10040rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10030,10163rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10030,10163rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10723rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10723rn执行时间:08:15:55,563|执行SQL:-1|处理结果集:|sql:ORGDATA = 10724
求围观,求释惑
亲们,今天在学校论坛看到位学电子的哥们,破解了实验室的电子示波器,居然把安卓的切水果给跑起来了,后来问一个修理示波器的同学,她说这个示波器是国产货,内置的是嵌入式linux。然后她还说,这个比他们卖的日本货要高级啊,还是触屏的呢。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/27.gif][/img],在此不尽为天朝人民的智慧又一次欢呼。但是,本人纳闷的是这个切水果不是使用java写的吗?难道是使用了NDK开发的吗?还是这个示波器里面按装了安卓Java的虚拟机呢??申明,这个示波器已经好几年了,应该不是安卓机器。客官,请围观啊。求释惑!rn[img=http://img.my.csdn.net/uploads/201205/24/1337845737_9823.jpg][/img]rn[img=http://img.my.csdn.net/uploads/201205/24/1337845723_1945.jpg][/img]
求高手围观
做了一个基于对话框的程序,其中有一个button的函数,times是一个全局变量,初始化0。rnvoid。。。()rnrn 。。。rn for(int i=times;i
oracle之奇葩分页
请问在oracle中,如果不使用rownum或row_number,如何实现分页呢?大牛捏
领导要求复杂的文本框
一个文本框,实现输入mac地址,复杂的是要求页面载入的时候,文本框里已经有“ - - - - - ”这样的格式了,用户只需要输入数字和英文字母,输入的内容自己在文本框里输入到相应位置了。就和咱们机器TCP/IP设置里,填写ip地址差不多,但是要求用一个文本框实现。不知道各位,这样的功能能实现不?如果不能,那怎样才能实现mac地址的智能输入?rn我的想法是用5个文本框来实现。
复杂的查询
ZJadjacent.objects.annotate(t_pci=F('cellto__pci')) &amp;lt;QuerySet [&amp;lt;ZJadjacent: 358036728805064833&amp;gt;, &amp;lt;ZJadjacent: 358036733100032129&amp;gt;, &amp;lt;ZJadjacent: 358046645884551297&amp;gt;, &amp;lt;ZJadjacen...
复杂查询
产品交易表A:rnrn产品 日期 数量rn....rnAAA 2010-01-01 100rnAAA 2010-01-10 -50rnBBB 2010-01-01 300rnBBB 2010-01-10 -150rn....rnrn我想通过一个日期范围来查询得到下面的结果:rnrn产品 期初结存 入库 出库 期末结存rnrn比如输入条件2010-1-1至2010-1-31。能够查出产品在2010-1-1前的结余数量,以及1月份出库、入库的数量,以及1月底当天还剩多少数量。
围观
哪位大哥帮我看看偶滴代码哪里出问题了呀rnrnUserActionrnrnpackage com.frank.action;rnimport java.util.List;rnrnrnimport com.frank.dao.UserDAo;rnimport com.frank.obj.User;rnimport com.opensymphony.xwork2.ActionSupport;rnpublic class UserAction extends ActionSupport rn private UserDAo userDao;rn private User user;rn private List users;rn private int userid;rn private int pageNo;rn private int pageCount;rn public int getPageNo() rn return pageNo;rn rn public void setPageNo(int pageNo) rn this.pageNo = pageNo;rn rn public void setUsers(List users) rn this.users = users;rn rn public int getUserid() rn return userid;rn rn public void setUserid(int userid) rn this.userid = userid;rn rn public User getUser() rn return user;rn rn public void setUser(User user) rn this.user = user;rn rn public String readyUpdate() throws Exceptionrn user=this.getUserDao().getUserById(userid);rn if(user!=null)rn return SUCCESS;rn rn return INPUT;rn rn public String login() throws Exceptionrn if(this.getUserDao().checkUser(user))rn computePageCount();rn users=this.getUserDao().getAllUsers(pageNo);rn return SUCCESS;rn rn return INPUT;rn rn public String updateUser() throws Exceptionrn if(this.getUserDao().updateUser(user))rn computePageCount();rn users=this.getUserDao().getAllUsers(pageNo);rn return SUCCESS;rn rn return INPUT;rn rn public String deleteUser() throws Exceptionrn User user=this.getUserDao().getUserById(userid);rn if(this.getUserDao().deleteUser(user))rn computePageCount();rn users=this.getUserDao().getAllUsers(pageNo);rn return SUCCESS;rn rn return INPUT;rn rn public String insertUser() throws Exceptionrn if(this.getUserDao().insertUser(user))rn computePageCount();rn rn users=this.getUserDao().getAllUsers(pageNo);rn return SUCCESS;rn rn return INPUT;rn rn public String selectUser() throws Exceptionrn computePageCount();rn users=this.getUserDao().getAllUsers(pageNo);rn return SUCCESS;rn rn rn public void computePageCount()rn int tempCount=this.getUserDao().getItemCount();rn pageCount=tempCount%10==0?tempCount/10:tempCount/10+1; rn rn @Overridern public String execute() throws Exception rn // TODO Auto-generated method stubrn return super.execute();rn rn public List getUsers() rn return users;rn rn public void setUsrs(List users) rn this.users = users;rn rn public int getPageCount() rn return pageCount;rn rn public void setPageCount(int pageCount) rn this.pageCount = pageCount;rn rnpublic UserDAo getUserDao() rn return userDao;rnrnpublic void setUserDao(UserDAo userDao) rn this.userDao = userDao;rnrnrn rnrn
围观……
rt
复杂的查询!
一个表,记录了多个人给多个人打分的成绩,打分项目是多项的。如何用一条SQL语句统计到底有多少人给这些人打分?rnrnrn姓名 打分人数rn-------------rnA 3rnB 2rnC 5
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数