【问题标题】:Finding Maximum Part寻找最大部分
【发布时间】:2022-02-09 04:05:42
【问题描述】:

我有 tablescolumns 在括号中是这样的:

Employee (Empno, Empname, City)
Project (Pno, Pname)
Part (Partno, Partname, Color)
Use (Pno, Partno)
Works (Empno, Pno)

我正在使用 ORACLE 11g 快捷版

我的查询:

SELECT *
  FROM (SELECT p.Pname AS Project_name
          FROM (SELECT COUNT(Color) AS colorPart, U.Pno, P.Color
                  FROM Part P
                  JOIN Use u
                    ON u.Partno = p.Partno
                   and p.Color = 'Red'
                 GROUP BY Color, Pno
                 ORDER BY colorPart DESC)
         WHERE rownum = 1) AS Final
  JOIN Project p
    ON Final.Pno = p.Pno;

这里出现错误:ORA-00933: SQL 命令未正确结束

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    您可以将当前查询重写为

    SELECT p.Pname AS Project_name
      FROM (SELECT Pno
              FROM (SELECT Pno, COUNT(Color) AS ColorPart
                      FROM Part P
                      JOIN Use u
                        ON u.Partno = p.Partno
                       AND p.Color = 'Red'
                     GROUP BY Color, Pno
                     ORDER BY ColorPart DESC)
             WHERE rownum = 1) Final
      JOIN Project p
        ON Final.Pno = p.Pno
    

    在哪里

    • 应该删除别名 Final 之前的 AS,因为别名 与其他一些 DBMS 不同,Oracle DB 中不允许子查询
    • p.Pname 应该在最外层的查询中

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多