HOTEL - zawiera m.in hotel_id i inne...
OFERTA ( czyt. termin ) - zawiera m.in hotel_id, cene, date_wylotu i inne..
Cel to wyciagniecie 10 hoteli z najnizszymi cenami, a dalej w kolejnosci najblizszy termin. Przy czym nalezy w koncowym wyniku zwrocic danej wybranej oferty i hotelu.
Doszlismy ze znajomym do takiego zapytania...
SELECT offer.* FROM hotel INNER JOIN offer ON (hotel.hotel_id = offer.hotel_id), (SELECT h.hotel_id, MIN(o.price) AS minprice FROM hotel h INNER JOIN offer o ON h.hotel_id = o.hotel_id GROUP BY h.hotel_id LIMIT 10 ) AS hp WHERE offer.hotel_id = hp.hotel_id AND offer.price = hp.minprice ORDER BY offer.price, offer.date_from;
Ma ono jednak wady, gdyz jesli hotel zawiera kilka offert ( czyt. terminow ) z ta sama cena to zwroci wszystkie... czyli nalezaloby jeszcze zrobic kolejny select zagniezdzony, ktory grupowalby wg daty wyjazdu ( min dacie wyjazdu ).
Czy ma ktos jakis lepszy pomysl jak poradzic sobie z tym zadaniem?