0

我正在尝试做类似的事情:

select fred.name
  , fred.emp_num
from fred
  , joe
  , (select * from
      (select yr_bonus
        , 1 grade
      from mark 
      where mark.department = fred.department)
      union
      (select
        0 yr_bonus
        , 2 grade
      from dual)
    ) pay
where fred.division = joe.division
and fred.grade = pay.grade;

这行不通。我似乎无法弄清楚如何将 mark.department 与 fred.department 从 2 个深度选择的级别联系起来。我该如何做到这一点?

4

2 回答 2

2

因为在 FROM 子句中您不能访问另一个表,所以您必须在 where 子句中使用 JOINS 或连接表。此外,您的查询似乎不正确,请描述您要做什么?

如果我理解正确,您的查询可以这样重写:

select fred.name
  , fred.emp_num
from fred
  , joe
where fred.division = joe.division
and ((fred.grade = 1 and fred.department in (select department from mark) 
or (fred.grade = 2))
于 2013-06-14T13:52:05.327 回答
1
SELECT  fred.name
,       fred.emp_num
FROM    fred
JOIN    joe
ON      fred.division = joe.division
JOIN
(
        SELECT  *
        FROM
        (
            SELECT  yr_bonus
            ,       1 grade
            FROM    mark
            UNION
            SELECT  0 yr_bonus
            ,       2 grade
            FROM    dual
        ) mark
        JOIN    fred
        ON      mark.department = fred.department
) pay
ON      fred.grade = pay.grade;
于 2013-06-14T14:24:09.607 回答