从连接表中选择min

时间:2013-12-19 09:35:17

标签: sql join group-by min

我无法自己解决这个问题,所以我想知道你们是否可以帮助我。我试图在谷歌,stackoverflow和其他几个地方找到我的答案,但没有任何结果..

我提出了一个问题:

SELECT leverancier.leveranciers_id,
    medicijn.artikelnr,
    medicijn.naam,
    medicijn.in_voorraad,
    medicijn.min_voorraad,
    min(order_medicijn.inkoopprijs) AS price
FROM leverancier
INNER JOIN voorraadorder
    ON leverancier.leveranciers_id = voorraadorder.leverancier_id
INNER JOIN order_medicijn
    ON order_medicijn.voorraadorder_id = voorraadorder.voorraadorder_id
INNER JOIN medicijn
    ON medicijn.artikelnr = order_medicijn.artikel_id
GROUP BY leverancier.leveranciers_id,
    medicijn.artikelnr,
    medicijn.naam,
    medicijn.in_voorraad,
    medicijn.min_voorraad
ORDER BY artikelnr

这给出了以下结果:


Leveranciers_ID / artikelnr / naam in_voorraad / min_voorraad / price

2   1   Aspirine       100  50  0.74
1   1   Aspirine       100  50  0.75
2   2   Abacivr        200  180 4.50
4   2   Abacivr        200  180 4.00
4   3   Acetazolamide  100  90  1.20
5   4   Ciclovir       145  120 0.50
3   5   levoceterizine 125  120 2.00

问题出现了: 我需要什么查询才能得到相同的结果,但只有每个artikelnr的价格最低的记录。所以结果是这样的:

Leveranciers_ID / artikelnr / naam in_voorraad / min_voorraad / price

2   1   Aspirine       100  50  0.74


4   2   Abacivr        200  180 4.00
4   3   Acetazolamide  100  90  1.20
5   4   Ciclovir       145  120 0.50
3   5   levoceterizine 125  120 2.00

如果有任何其他信息需要回答这个问题,请问我。

提前致谢

1 个答案:

答案 0 :(得分:0)

可能的解决方案之一:添加一个内部SQL,用于计算每个 artikelnr min 价格,并使用 HAVING 子句,使用内部SQL来过滤结果。

干杯