1

所以我有这个:

SELECT p.plantnaam,o.levcode,o.offerteprijs
FROM plant p, offerte o
JOIN (SELECT plantcode , MIN(offerteprijs) AS offprijs 
      FROM offerte
      GROUP BY plantcode) s
  ON s.plantcode = p.plantcode
  AND s.offprijs = o.offerteprijs
ORDER BY p.plantnaam,l.levcode

显然在第 6 行, p.plantcode 突然神奇地变成了一个无效标识符。为什么是这样?为什么在那之前同一张桌子上的所有其他人都很好?

4

1 回答 1

5

问题是您正在混合 JOIN。您有隐式和显式连接。带有 ON 子句的显式 JOIN 语法比带有逗号的隐式连接具有更高的优先级。因此,plantofferte表的别名在 ON 子句中将不可用。尝试在整个过程中使用相同的 JOIN 类型:

SELECT p.plantnaam, o.levcode, o.offerteprijs
FROM 
(
  SELECT plantcode , MIN(offerteprijs) AS offprijs 
  FROM offerte
  GROUP BY plantcode
) s
INNER JOIN plant p
   ON s.plantcode = p.plantcode
INNER JOIN offerte o
   ON s.offprijs = o.offerteprijs
ORDER BY p.plantnaam, l.levcode
于 2013-05-07T22:35:14.827 回答