2013-12-19 4 views
2

Я не могу понять этот вопрос самостоятельно, поэтому мне интересно, могли бы вы, ребята, помочь мне. Я пытался найти мой ответ на Google, StackOverflow анс несколько других мест, но без какого-либо результата ..Выбор min из объединенных таблиц

Я сделал запрос:

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 

Возникает вопрос: Какой запрос мне нужен, чтобы получить тот же результат, но только с записями, где цена является самой низкой для каждого артикуляра. Таким образом, результат будет выглядеть так:

Leveranciers_ID/artikelnr/НА 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

Что такое СУБД, которыми вы пользуетесь? –

+0

На самом деле я использую 2 RDBMSystems. Я использую MySQLWorkbench и редактирую некоторые значения, которые я использую. PHPMyAdmin – Erik

+1

Удалите агрегацию (min()) и группируйте ее из своего запроса и попробуйте следующее: 'select * from ... inner join ....' и добавьте предложение where в конце: 'Где order_medicijn.inkoopprijs = (выберите min (t2.inkoopprijs) from order_medicijn t2, где t2.artikel_id = medicijn.artikelnr)' –

ответ

0

Одним из возможных решений: Добавление еще один внутреннего SQL, который вычисляет мин цены каждого artikelnr и с использованием HAVING положения, в котором используется внутренний SQL, чтобы фильтровать результат.

Cheers

Смежные вопросы