【问题标题】:Oracle SQL Error ORA-00933: SQL command not properly endedOracle SQL 错误 ORA-00933:SQL 命令未正确结束
【发布时间】:2015-10-18 15:33:23
【问题描述】:

这个查询有什么问题?

SELECT F.PART_NUM, F.DESCRIPTION, S.PART_NUM, S.DESCRIPTION, F.CLASS 
FROM PART F, PART S 
WHERE F.CLASS = S.CLASS AND F.PART_NUM < customer_num =" ORDERS.CUSTOMER_NUM" 
customer_name =" 'Johnson''s"> SELECT ORDERS.ORDER_NUM, ORDER_DATE
FROM ORDERS, ORDER_LINE, PART
WHERE ORDERS.ORDER_NUM = ORDER_LINE.ORDER_NUM
AND ORDER_LINE.PART_NUM = PART.PART_NUM
AND DESCRIPTION = 'Iron';

【问题讨论】:

  • 在" 'Johnson''s"之后的分号;
  • 它有很多问题,很难开始。这里有一些明显的:没有使用正确的JOIN 语法;子查询周围没有括号; &gt; 似乎指的是两列; ORDERS.CUSTOMER_NUM 周围的双引号。
  • 双引号用于标识符,例如“列名”。对字符串文字使用单引号,例如“约翰逊”。
  • customer_num =" ORDERS.CUSTOMER_NUM" customer_name =" 'Johnson''s"&gt; SELECT ORDERS.ORDER_NUM, ORDER_DATE 应该做什么?

标签: sql oracle ora-00933


【解决方案1】:

很难为表结构提供正确答案并解释您尝试实现的业务逻辑,但我认为您想要这样的东西:

SELECT F.PART_NUM, F.DESCRIPTION, S.PART_NUM, S.DESCRIPTION, F.CLASS 
FROM PART F, PART S 
     , ( SELECT customer_num
               , customer_name
               , order_line.part_num
        FROM ORDERS, ORDER_LINE 
        WHERE ORDERS.ORDER_NUM = ORDER_LINE.ORDER_NUM ) o
WHERE F.CLASS = S.CLASS 
AND F.PART_NUM < o.customer_num 
and o.customer_name ='Johnson''s'
AND o.PART_NUM = PART.PART_NUM
AND DESCRIPTION = 'Iron';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多