witam,
mam problem, nad którym myślę już dłuższy czas i każde rozwiązanie, które wymyśle nie wydaje mi się w pełni doskonałe...A może po prostu całkiem źle do tego podchodzę bo im więcej o tym myślę tym bardziej jestem skołowany.
Mam 2 tabele. Zamówienia i pozycje zamówieniowe. Do pierwszej wprowadzamy informacje o zamówieniu (id, numer zamówienia, data wpływu, zamawiający, TERMIN REALIZACJI itd), a do drugiej informacje o pozycjach z zamówienia (id, id zamówienia, ilość, produkt, rabat, TERMIN REALIZACJI itd). I problem polega na tym, że połowę zamówień firma wysyła do klienta jako całość w jednym terminie, a drugą połowę wysyła na raty bo zamawiający życzy sobie aby różne pozycje w zamówieniu były dostarczane w różnych terminach. (stąd kolumna TERMIN REALIZACJI w tabeli pozycji zamawianych). W bazie mam harmonogramy wysyłek, gdzie chce żeby były wyświetlane całe zamówienia (w przypadku jednego terminu) lub pojedyncze pozycje z zamówień (w przypadku różnych terminów). Tak samo podsumowania sprzedaży. Żeby wszystko się zgadzało część zamówień muszę "rozbijać" na pozycje żeby wszystko było ok. Na razie obchodzę to poprzez funkcję UNION. Łączę 2 tabele w zależności od zamawiającego i raz mam termin z zamówienia, a raz z pozycji(do tej pory tylko 2 firmy podają różne terminy na zamówieniach, ale za chwilę może się to zmienić, albo ta sama firma raz będzie chciała całość, a raz na raty). Ale tak jak juz pisałem to rozwiązanie jest złe. Mam kilka innych pomysłów:
1. Wprowadzić dodatkową kolumnę, gdzie przy wprowadzaniu zamówień będzie do wyboru: "traktuj zamówienie jako całość" i "rozbij zamówienie na pozycje". Wtedy UNION mogę połączyć na podstawie tej dodatkowej kolumny. Tylko że tutaj widzę taki problem że jak ktoś zapomni wpisać daty w TERMIN REALIZACJI to dane z tego zamówienia nie pokażą się w harmonogramie i w podsumowaniach (bo one są oparte na datach i okresach). Nie mogę tego pola ustawić jako obowiązkowego do wypełnienia, bo raz należy wypełnić TERMIN REALIZACJI w tabeli zamówienia, a raz w tabeli pozycje. W sumie to pisząc tego posta myślę że to rozwiązanie jest najlepsze, więc o innych gorszych nie będę wspominał. Brakuje mi tylko jakiegoś rozwiązania - jeśli wybieramy "traktuj zamówienie jako całość" to obowiązkowe pole TERMIN REALIZACJI mamy w tabeli zamówienia, a jeśli wybieramy "rozbij zamówienie na pozycje" to wtedy obowiązkowe pole to TERMIN REALIZACJI z tabeli pozycji. Istnieje taka możliwość w MySqlu?