![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 31.12.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Już jakiś czas zastanawiam się nad rozwiązaniem problemu z siatka cen do produktów. Mam sobie program, który ma służyć do obliczania cen za poszczególne przedmioty (meble), lecz ich ceny zależne są od wymiarów - dajmy na to jednej ścianki. I tak oto mam od firmy zlecającej całą tabelkę z cenami np: Kod wys\szer 500-600 601-700 701-800 801-900 itd. 500-600 150 326 489 zzz 601-700 389 489 550 zzz 701-800 xyx yxy yyx xxy 801-900 xxx yyy yxx xyy itd. Tutaj mam jeszcze tabele z cenami w zależności od kroju itp, ale jak uporam się z sama ideą dla tej bazy danych będzie już ok. Mam zatem pytanie, jak umieścić takie tabele z cenami w bazie danych i jak składać zapytania SQL, aby wyciągnąć informację ile kosztować będzie ścianka o wymiarach np. 527x780 (wymiary mieszczą się w szerokości 500-600 i wysokości 701-800, czyli cena XYX, tylko jak to sprawdzić zapytaniem jednym?) Myślałem nad stworzeniem tabeli, gdzie zamiast wymiarów WxH, byłyby wpisane maksymalne pola, lub obwody danych elementów, ale nie wiem czy to dobre rozwiązanie, może ktoś z was ma inne. Musi być również możliwość wygenerowania pełnej siatki cen w formacie jaki podałem wyżej, czyli info o W i H powinny gdzieś być zaszyte. Musze brać pod uwagę również fakt iż, ceny mogą się zmieniać i muszę mieć łatwy sposób ich aktualizacji (zmieniać mogą się pojedyncze wartości, lub na zasadzie ALL +20%). Z góry wielkie dzięki za informacje (IMG:style_emoticons/default/biggrin.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz co, chyba wymyśliłem proste i fajne rozwiązanie.
Tabela prices: id - integer, PRIMARY width_max - integer height_max - integer price - decimal item_id - integer // klucz obcy na tabelę z obiektami, których dotyczy cennik width_max i height_max to wartości krańcowe zakresu. Proponuję takie zapytanie do wybierania danych:
Nierówności mogą być ostre lub nieostre. Zrobiłem nieostre, bo dla np. obiektu o wymiarach 600 x 520 lepiej by trafił on do przedziału [600-700] x [500-600] niż [500-600] x [500-600]. Nazwa _max może być trochę myląca, bo chodzi o przedział niedomknięty. Jednak lepiej w bazie zawrzeć maksimum przedziału niż minimum, bo dla bardzo małych obiektów znajdzie ci cenę z najmniejszego przedziału, a dla zbyt dużego nie zwróci nic i o to chodzi. Ten post edytował croc 13.05.2010, 15:03:41 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 19:41 |