Zapytanie SQL do cennika

0

Witam

Mam tabelę z cennikiem transportowym z kolumnami
DATA_OD; DATA_DO; DYSTANS; WAGA; KOSZT
...
2015-01-01;2016-12-31; 100; 1000; 200
2015-01-01;2016-12-31; 200; 1000; 300
2015-01-01;2016-12-31; 300; 1000; 400
...
2015-01-01;2016-12-31; 100; 2000; 250
2015-01-01;2016-12-31; 200; 2000; 350
...

Daty to daty obowiązywania danej ceny, dystans odległość od (jak jest 100 to od 100 km w górę aż do następnej kategorii czyli 200 km), waga w kg, tak jak odległość - od podanej wartości w górę aż do następnej kategorii (czyli na przykładzie od 1000 kg do 2000 kg).

W drugiej tabeli mam wagę i odległość na jaką trzeba dowieźć towar (np. 140 km, 1543 kg).
Jak połączyć te tabele, żeby uzyskać odpowiednią cenę dla danego transportu?

Z góry dziękuję za pomoc.

4
select min(c.cena)
  from transport c
 where :parametr_z_data between c.date_from and c.date_to
   and c.dystans > :parametr_z_km
   and c.waga > :parametr_z_kg

Pisane na szybko z głowy ale na podanym przypadku zadziała bo zwróci Ci 350. Problem pojawi się gdy zakresy zaczną się pokrywać. Niestety bez DDL nie mam przypadku testowego i nie chce mi się myśleć nad "elegantszym" rozwiązaniem.

0

Niestety cena nie zawsze rośnie, ale naprowadziłeś mnie na kierunek. :)

SELECT TOP 1 c.dystans, c.waga,  c.cena
  FROM transport c
 WHERE :parametr_z_data BETWEEN c.date_from AND c.date_to
   AND c.dystans > :parametr_z_km
   AND c.waga > :parametr_z_kg
ORDER BY 1 desc, 2 desc

Jeszcze tego nie sprawdziłem ale powinno działać. :)
Dziękuję za pomoc.

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