Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要Oracle查询中的帮助吗_Sql_Oracle - Fatal编程技术网

Sql 需要Oracle查询中的帮助吗

Sql 需要Oracle查询中的帮助吗,sql,oracle,Sql,Oracle,我有一个需求,其中来自前端(JSP) 如果选择“市场”,则必须填充映射到市场的部门 同样,根据选定的部门价值,终端设备必须 填充 市场——首次下跌 扇区-第二个下拉列表 网络分类--第三个下拉列表 因此,最初获取此页面时,会有一个数据库命中, 作为oracle DB开发人员,我必须发送包含此映射的参数 映射到部门和映射到市场的终端设备 我正在使用下面的查询,它没有按照要求给出我的结果 SELECT C.MARKET_SEGMENT_NAME, C.MARKET_SEGMENT_ID

我有一个需求,其中来自前端(JSP)

  • 如果选择“市场”,则必须填充映射到市场的部门
  • 同样,根据选定的部门价值,终端设备必须 填充
  • 市场——首次下跌

    扇区-第二个下拉列表

    网络分类--第三个下拉列表

    因此,最初获取此页面时,会有一个数据库命中, 作为oracle DB开发人员,我必须发送包含此映射的参数

    映射到部门和映射到市场的终端设备

    我正在使用下面的查询,它没有按照要求给出我的结果

    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的建议是在显示层中处理这个问题。所以我最好删除我的答案:-)