2013-12-19 49 views
2

我無法自己想出這個問題,所以我想知道你們是否可以幫助我。我試圖找到我在谷歌的答案,計算器ANS其他幾個地點,但沒有任何結果..從連接表中選擇分鐘

我做了一個查詢:

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 /價格

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 

如果要回答這個問題需要的其他資料,請提問。

預先感謝

+0

什麼是您正在使用的RDBMS? –

+0

我實際上使用2個RDBMSystems。我使用MySQLWorkbench並編輯一些使用PHPMyAdmin的值 – Erik

+1

從查詢中刪除聚合(min())和group by,並嘗試以下操作:'select * from ... inner join ....'並添加where子句最後:'Where order_medicijn.inkoopprijs =(從order_medicijn t2選擇min(t2.inkoopprijs),其中t2.artikel_id = medicijn.artikelnr)' –

回答

0

其中一個可能的解決方案的:添加該計算分鐘價格每個artikelnr之一多個內部SQL和使用HAVING子句,其使用內部SQL,以過濾結果。

乾杯