Wątek przeniesiony 2014-04-15 15:54 z Kosz przez ŁF.

Zapytanie SQL (instrukcje grupujące) - wybór najtańszego dostawcy

0

Część | Dostawca | Cena
Zawór EGR | INTERCARS | 350
Zawór EGR | AUTOPARTS | 355
Filtr oleju | INTERCARS | 80
Filtr oleju | AUTOPARTS | 70

Tworzę zapytanie, które zwróci dla każdej części najtańszego dostawcę.
Czyli dla tej tabeli powinno zwrócić dwa rekordy jak poniżej:

  1. Zawór EGR | INTERCRS | 350
  2. Filtr oleju | AUTOPARTS | 70

Używam MIN, ORDER BY ale zwraca mi coś innego tzn. znajduje cenę minimalną dla każdej części ale źle podpina dostawcę. Ma ktoś pomysł?

0
SELECT Część,Min(Cena) 
From NazwaTabeli
GROUP BY Część

i do tego INNER JOIN'em dopiąć dopiero sprzedawcę.

0
select 
   x.czesc, 
   x.cena, 
   group_concat(c.dostawca separator ', ') dostawcy 
from 
(
select czesc, min(cena) cena from tabela group by 1
) x 
join 
tabela c 
on (c.czesc, c.cena)=(x.czesc, x.cena)
group by 1,2
0

@savior przyjmijmy, że mamy jedną tabelę a instrukcja JOIN łączy dwie tabele.
@Marcin.Miga zapodał rozwiązanie, dość rozbudowane ale właśnie dla jednej tabeli chyba. Przetestuje to potem.
@Marcin.Miga idea ok, sprawdziłem działa, dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1