Sql 需要Oracle查询中的帮助吗
我有一个需求,其中来自前端(JSP)Sql 需要Oracle查询中的帮助吗,sql,oracle,Sql,Oracle,我有一个需求,其中来自前端(JSP) 如果选择“市场”,则必须填充映射到市场的部门 同样,根据选定的部门价值,终端设备必须 填充 市场——首次下跌 扇区-第二个下拉列表 网络分类--第三个下拉列表 因此,最初获取此页面时,会有一个数据库命中, 作为oracle DB开发人员,我必须发送包含此映射的参数 映射到部门和映射到市场的终端设备 我正在使用下面的查询,它没有按照要求给出我的结果 SELECT C.MARKET_SEGMENT_NAME, C.MARKET_SEGMENT_ID
SELECT C.MARKET_SEGMENT_NAME,
C.MARKET_SEGMENT_ID,
B.SECTOR_NAME,
B.SECTOR_ID,
A.WEB_CATEGORY_NAME,
A.WEB_CATEGORY_ID
FROM MSE_WEB_CATEGORY_MASTER A,
MSE_SECTOR_MASTER B,
MSE_MARKET_SEGMENT_MASTER C
WHERE C.MARKET_SEGMENT_ID = B.FK_MARKET_SEGMENT_ID
AND B.SECTOR_ID = A.FK_SECTOR_ID(+);
输出:
MARKET_SEGMENT_NAME MARKET_SEGMENT_ID Sector Sector_id WEB_cate Web_category_id
GOOGLE 90 Slawn 1 FLIPKART 1
BING 100 Clown 2 SNAPDEAL 2
YAHOO 110 VERICON 4 AMAZON 3
YAHOO 110 VERICON 4 E-KART 4
YAHOO 110 QUALCOMM 3
MARKET_SEGMENT_NAME-MARKET_SEGMENT_ID-SECTOR_NAME-SECTOR_ID-WEB_CATEGORY_NAME-WEB_CATEGORY_ID
GOOGLE-90-Slawn-1-FLIPKART-1
BING-100-Clown-2-SNAPDEAL-2
YAHOO-110-VERICON-4-AMAZON-3
YAHOO-110-VERICON-4-E-KART-4
YAHOO-110-QUALCOMM-3
预期输出:
MARKET_SEGMENT_NAME MARKET_SEGMENT_ID Sector Sector_id WEB_cate Web_category_id
GOOGLE 90 Slawn 1 FLIPKART 1
BING 100 Clown 2 SNAPDEAL 2
YAHOO 110 VERICON 4 AMAZON 3
YAHOO 110 VERICON 4 E-KART 4
YAHOO 110 QUALCOMM 3
MARKET_SEGMENT_NAME-MARKET_SEGMENT_ID-SECTOR_NAME-SECTOR_ID-WEB_CATEGORY_NAME-WEB_CATEGORY_ID
GOOGLE-90-Slawn-1-FLIPKART-1
BING-100-Clown-2-SNAPDEAL-2
YAHOO-110-VERICON-4-AMAZON-3
YAHOO-110-VERICON-4-E-KART-4
YAHOO-110-QUALCOMM-3
这样我就可以把这个组合作为过程的输出参数发送。
由于JSP/presentation层中不允许有DB查询有限制,所以一切都是在DB层完成的。我同意@Ben的观点。您的查询似乎返回了所需的数据。显示层的任务是将值连接到虚线分隔的字符串中 话虽如此,这里有一个解决方案,可以满足您的要求
| 124;
是串联运算符。NVL2()
函数处理外部连接的列,并在它们为空时抑制破折号
SELECT C.MARKET_SEGMENT_NAME
||'-'||C.MARKET_SEGMENT_ID
||'-'||B.SECTOR_NAME
||'-'||B.SECTOR_ID
||nvl2(A.WEB_CATEGORY_NAME,'-'||A.WEB_CATEGORY_NAME,null)
||nvl2(A.WEB_CATEGORY_ID,'-'||A.WEB_CATEGORY_ID,null) concat_str
FROM MSE_WEB_CATEGORY_MASTER A,
MSE_SECTOR_MASTER B,
MSE_MARKET_SEGMENT_MASTER C
WHERE C.MARKET_SEGMENT_ID = B.FK_MARKET_SEGMENT_ID
AND B.SECTOR_ID = A.FK_SECTOR_ID(+);
请确保在发布问题之前格式化您的测试用例。阅读如何提出一个好的技术问题。在我看来,如果你试图返回一对多的关系,你需要某种字符串聚合。这里有很多关于这个主题的信息:所以基本上你会将数据聚合到一个逗号分隔的列表中,让应用层将其分解成数组或其他什么。这听起来很可怕,你可能会遇到字符串长度问题。为什么不发送一个打开的光标,让演示层完成它的工作呢?谢谢你们的输入。现在Java的人可以用开放游标来处理数据了。啊,我错过了必须抑制破折号的部分。您正确地指出Ben的建议是在显示层中处理这个问题。所以我最好删除我的答案:-)