
Czyli wyciągnąć z wierszy 3 największe ceny z każdego działu w kolejności od największej do najmniejszej.
Sam wykombinowałem coś takiego:
SELECT c1.dzial_id dzial_id, c1.cena cena1, c2.cena cena2, c3.cena cena3 FROM (SELECT * FROM przedmioty ORDER BY cena DESC) c1 LEFT JOIN (SELECT * FROM przedmioty ORDER BY cena DESC) c2 ON ( c1.dzial_id = c2.dzial_id && c1.id != c2.id ) LEFT JOIN (SELECT * FROM przedmioty ORDER BY cena DESC) c3 ON ( c1.dzial_id = c3.dzial_id && c3.id != c1.id && c3.id != c2.id ) GROUP BY c1.dzial_id
Mam jeszcze pomysł by dodać po prostu dodatkowe trzy kolumny i za pomocą trigger'ów je aktualizować.
I chciałbym się dowiedzieć czy może nie znacie jakiegoś lepszego rozwiązania.