【问题标题】:SQL Many-to-Many Query in Apex OracleApex Oracle 中的 SQL 多对多查询
【发布时间】:2021-03-11 21:57:38
【问题描述】:

我通过创建中间表PRODUCT_TYPE-LABELS 在表PRODUCT_TYPELABEL 之间创建了多对多关系。我想检索所有标有“无麸质”和“无乳糖”标签的产品,并找到了类似主题的帮助 (How to filter SQL results in a has-many-through relation),但始终无法正常工作。

表格如下:

PRODUCT_TYPE{

  PRODUCT_TYPE ->Primary Key
  CONTAINER
    VOLUME_L
     PRICE_EUROS
    ...
}

LABEL{

  LABEL_NAME ->Primary Key
  REQUIREMENTS
 }

PRODUCT_TYPE-LABELS{

  PRODUCT_TYPE
  LABEL_NAME
}

事实上,即使在创建最简单的命令时

SELECT PRODUCT_TYPE-LABELS.PRODUCT_TYPE
FROM PRODUCT_TYPE-LABELS

我收到以下我无法解决的错误ORA-00933: SQL command not properly ended。我正在研究 Apex Oracle(本课程必需)。 谢谢!

【问题讨论】:

    标签: sql oracle many-to-many oracle-apex


    【解决方案1】:

    如果您的表格确实被命名为PRODUCT_TYPE-LABELS,那么您需要将其括在双引号中。 - 不是表格名称中允许的标准字符,因此要使用诸如此类的特殊字符,您需要在表格周围加上引号。我建议 AGAINST 使用这样的表名,并且可能使用 PRODUCT_TYPE_LABEL 之类的名称。

    查询是否可以从 SQL Developer、SQLPlus 或任何其他可用于运行查询的工具中运行?

    尝试运行查询:

    SELECT PRODUCT_TYPE
    FROM "PRODUCT_TYPE-LABELS"
    

    【讨论】:

    • 谢谢!更正此问题后,来自 stackoverflow.com/questions/7364969/…> 的解决方案完美运行
    【解决方案2】:
    select * from (
        select rownum rowno, CUST_ID,CUST_NAME,no_of_orders,orders_amount,EMAIL from (
        select mst.CUST_ID, mst.CUST_NAME, count(mst.INVONO) no_of_orders, sum(SUB_TOTAL) orders_amount, au.EMAIL
        from sales_mst mst,CUSTOMER_INFO cust, APP_USERS au
        where cust.USER_NAME = au.USERNAME
        and cust.cust_id=mst.cust_id
        and (au.gender= :P41_GENDER or :P41_GENDER is null)
        and (au.DOB = :P41_DOB or :P41_DOB is null)
        group by mst.CUST_ID, mst.CUST_NAME,au.EMAIL
        having nvl(sum(SUB_TOTAL),0) > 0
        order by 3 desc,4 desc
        )) where rowno <=:P41_TO_CUSTOMER
    /*select * from (
    select rownum rowno, CUST_ID,CUST_NAME,no_of_orders,orders_amount from (
    select mst.CUST_ID, mst.CUST_NAME, count(mst.INVONO) no_of_orders, sum(SUB_TOTAL) orders_amount
      from sales_mst mst
     group by mst.CUST_ID, mst.CUST_NAME
    having nvl(sum(SUB_TOTAL),0) > 0
     order by 3 desc,4 desc
    )) where rowno <=:P41_TO_CUSTOMER
    */
    

    【讨论】:

      猜你喜欢
      • 2019-06-30
      • 2022-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      相关资源
      最近更新 更多