System zarządzania firmą OMEGA Wrocław, 25.11.2009 Politechnika Wrocławska Zastosowanie baz danych laboratorium Paweł Porombka 148955 Prowadzący: dr inż. Olgierd Unold Termin: ŚR/P, 15:15
1. Opis mini świata 1.1. Ogólne założenia Projekt dotyczy stworzenia systemu do zarządzania hurtownią artykułów budowlanych, która równocześnie jest producentem większości oferowanych produktów rozprowadza produkty innych producentów. Firma działa tylko Polsce. Posiada około 50 klientów, gdzie ta liczba może wzrosnąć w kolejnych latach. Klienci mogą składać zamówienia lub zamówienia mogą być składane w ich imieniu przez pracowników firmy. Każdy z pracowników posiada przyporządkowanych do niego klientów (jednego bądź wielu), których zamówieniami się zajmuje (weryfikuje, ewentualnie poprawia). Każde zamówienie najpierw zostaje utworzone przez klienta, bądź pracownika. Na takim etapie zarówno klient jak i pracownik mogą dokonywać wciąż edycji zamówień (status w trakcie edycji - E). Gdy zamówienie jest gotowe zostaje zatwierdzone przez osobę, która je składa i w tym momencie klient nie może już dokonywać edycji takiego zamówienia (status zaakceptowane - A). Możliwość edycji nadal ma konkretny pracownik przydzielony do klienta, a logistyk w swoim panelu widzi, że powstało nowe zamówienie zaakceptowane, którego jeszcze nie może on realizować gdyż nie zostało zamknięte. Na tym etapie pracownik sprawdza, czy stany magazynowe pozwalają zrealizować zamówienie i jeżeli tak, to rezerwuje konkretne produkty i zmienia status zamówienia na Zamknięte - C. W tym momencie zamówienie jest widoczne dla logistyka, który może je wpisać do swojego planu dostaw, obsługiwanego przez firmę zewnętrzną. Jeżeli zamówienie zostaje wysłane logistyk zmienia jego status na w drodze do klienta - P. W chwili dostarczenia zamówienia na miejsce, firma transportowa informuje o wykonaniu zlecenia, w wyniku czego logistyk zmienia status zamówienia na zrealizowane - R. Na każdym z etapów realizacji zamówienia, przed wysłaniem produktów, główny administrator, ma możliwość wprowadzania dowolnych zmian w zamówieniu. Każde zamówienie składa się co najmniej jednego produktu, będącego w ofercie hurtowni. Każdy z pracowników ma ściśle określone uprawnienia (np. składanie zamówień). Dodatkowo całą firmą zarządza jej dyrektor, który może dokonywać dowolnych zmian na pewnych etapach realizacji zamówień (administrator), oraz w dowolnej chwili zmienić status zamówienia (gdyż są sytuacje, że ktoś błędnie zatwierdził zamówienie). 1.2. Środowisko implementacji Projekt zostanie wykonany przy użyciu narzędzi NuSphere PhpED 5.2, Adobe Dreamweaver CS4, w języku PHP 5.0.2, z wykorzystaniem szablonów Smarty. Baza danych zostanie zaprojektowana w oparciu o technologię MySQL (typ MyISAM), stosując narzędzia EMS SQL Manager 2007 for MySQL oraz MySQL Workbench 5.1 OSS. Do stworzenia interfejsu graficznego zostanie wykorzystany Adobe Photoshop CS4, Corel Paint Shop Pro Photo XII. 1.3. Otoczenie produktu System będzie pracował w średniej wielkości hurtowni. Musi być na tyle intuicyjny, by klienci składający zamówienia chcieli z niego korzystać. Jeżeli klient będzie mógł szybko, łatwo i wygodnie złożyć zamówienie, będzie chciał korzystać z usług tej hurtowni. System musi również na tyle uprościć proces zarządzania zamówieniami w firmie, aby zminimalizować możliwość wystąpienia błędów w realizacji zleceń klienta, oraz znacznie przyspieszyć proces tej realizacji. Z tego powodu produkt będzie działał w sieci Internet, z dostępem przez przeglądarkę sieciową. Aplikacja będzie się 2
znajdowała na serwerze hurtowni, która będzie odpowiedzialna za konserwację. Ze względu na możliwość nieautoryzowanego dostępu, zostanie wykonane zabezpieczenie w postaci panelu logowania użytkowników. Istotną cechą systemu będzie możliwość zdalnego dostępu wielu użytkowników równocześnie (aplikacja współbieżna), powoduje to konieczność stworzenia dodatkowego podsystemu wzajemnych wykluczeń (blokad rekordów). Aplikacja będzie zatem wielostanowiskowa. Połączyć się z systemem będzie mógł każdy, dla kogo stworzono konto, przy czym każdy użytkownik ma tylko określone prawa, np. klienci widzą tylko swoje zamówienia, pracownicy swoich klientów i ich zamówienia. Wstępnie przewidywane są 4 typy stanowisk: administrator, logistyk, pracownik firmy, klient. Aplikacja będzie skonstruowana w taki sposób, by umożliwić przyszłą rozbudowę. Aktualnie na rynku znajduje się wiele rozwiązań w postaci systemów ERP (Systemy Zarządzania Przedsiębiorstwem), które oferują ogromny wachlarz możliwości. Projektowany system, w przeciwieństwie do tego typu rozwiązań oferuje podstawowe funkcjonalności, które zadowolą większość klientów, jednocześnie minimalizując koszty. Poza tym system można znacznie łatwiej i szybciej wdrożyć, a jego poznanie jest dużo prostsze dla przeciętnego użytkownika. Istotny jest również fakt, że hurtownia decyduje się na informatyzację przedsiębiorstwa, co jest krokiem naprzód. Konkurencja nadal wydaje się zostawać w tej sferze w tyle powołując się na niewiedzę swoich klientów z zakresu obsługi komputera. Firma chce pomimo tych przeciwności rozwijać się i wdrażać najnowsze technologie, czego przykładem jest niniejszy system. 1.4. Szacunki Aktualnie firma obsługuje 50 klientów. Sprzedaż dotyczy produktów wytwarzanych przez samą hurtownię oraz obejmuje 5 innych producentów (łącznie 6-ciu producentów). Znając statystyki prowadzone przez firmę, szacujemy, że rocznie hurtownia pozyskuje około 10 nowych klientów. Średnio miesięcznie firma otrzymuje około 3-4 zamówień od jednego klienta, co daje ok. 200 zam. miesięcznie, zatem rocznie około 2400. Aktualnie firma zatrudnia 15 pracowników, w najbliższej przyszłości (2 lata) firma nie planuje zwiększenia kadry pracowniczej, jednakże w celu zapewnienia elastyczności systemu zakładamy możliwość nawet podwojenia ilości pracowników. W perspektywie 5 lat firma może posiadać bazę 100 klientów, co daje nawet około 400 zamówień miesięcznie (4800 rocznie). Firma aktualnie ma w ofercie 65 produktów, podzielonych na 10 kategorii. Hurtownia może rozwinąć swoją bazę produktową, w ciągu najbliższych 5 lat, do 100 pozycji. Firma ma również plany rozszerzenia oferty o produkty nowych producentów, załóżmy elastycznie, do 100 w ciągu najbliższych 5 lat. 3
2. Opis funkcjonalny 2.1. Lista funkcji W systemie pomimo różnych typów kont to uprawnienia decydują o dostępnych dla konkretnego konta funkcjach, stąd lista bez podziału na konta użytkowników. Logowanie do systemu. Wylogowanie z systemu. Przeglądanie listy złożonych zamówień. Przeglądanie listy dostępnych produktów. Przeglądanie listy klientów, pracowników, logistyków, administratorów, użytkowników. Wyświetlanie ekranu z pełnymi danymi osobowymi, oraz ewentualnie przydzielonym kontem użytkownika. Filtrowanie zamówień w zależności od praw dostępu oraz klientów (filtry widoczności zamówień). Filtrowanie zamówień według ich statusów. Filtrowanie użytkowników według stanowiska (logistycy, administratorzy, pracownicy ) Sortowanie zamówień według klientów (nazwy firmy, nazwiska i imienia grupowanie). Sortowanie klientów według nazwy firmy, nazwiska i imienia. Sortowanie pracowników/administratorów/logistyków według nazwiska, imienia. Sortowanie użytkowników według nazw loginów. Sortowanie zamówień według dat ich zaakceptowania. Sortowanie produktów według nazw. Składanie zamówień. Usuwanie zamówień. Edycja zamówień. Zmiana statusu zamówienia (akceptacja, zamykanie, wysyłanie do klienta, zakańczanie). Dodawanie użytkowników (dla konkretnych danych osobowych klient, pracownik, administrator, logistyk). Usuwanie użytkowników. Edycja kont użytkowników. Nadawanie uprawnień użytkownikom (edycja). Przydzielanie klientów do pracowników (dodawanie, usuwanie z listy). Dodawanie, usuwanie i edycja danych osobowych klientów. Dodawanie, usuwanie i edycja danych osobowych pracowników. Dodawanie, usuwanie i edycja danych osobowych administratorów. Dodawanie, usuwanie i edycja danych osobowych logistyków. Dodawanie, usuwanie i edycja produktów w bazie danych. Wybieranie produktów z listy i dodawanie ich do zamówienia podczas składania zamówienia. 4
2.2. Hierarchia funkcji 1. Zarządzanie zamówieniami oraz produktami 1.1. Składanie zamówień a) Zmiana statusu zamówienia (akceptacja, zamykanie, wysyłanie do klienta, zakańczanie) 1.2. Usuwanie zamówień 1.3. Edycja zamówień a) Zmiana statusu zamówienia (akceptacja, zamykanie, wysyłanie do klienta, zakańczanie) 1.4. Przeglądanie listy złożonych zamówień 1.5. Przeglądanie listy produktów 1.6. Przeglądanie listy producentów 1.7. Dodawanie, usuwanie produktów w bazie danych 1.8. Dodawanie i usuwanie, edycja danych producentów 1.9. Wybieranie produktów z listy i dodawanie ich do zamówienia podczas składania zamówienia 1.10. Filtrowanie zamówień w zależności od praw dostępu 1.11. Filtrowanie i sortowanie zamówień wg klientów (nazwy firmy, nazwiska i imienia) 1.12. Filtrowanie zamówień według ich statusów 1.13. Filtrowanie zamówień według dat ich zaakceptowania 1.14. Filtrowanie produktów według nazw i producentów 1.15. Sortowanie producentów wg (nazwy firmy, nazwiska i imienia) 2. Obsługa kont użytkowników 2.1. Logowanie do systemu 2.2. Wylogowanie z systemu 2.3. Dodawanie użytkowników (dla konkretnych danych osobowych klient, pracownik, administrator, logistyk) 2.4. Usuwanie użytkowników 2.5. Edycja kont użytkowników 2.6. Nadawanie uprawnień użytkownikom (edycja) 2.7. Przydzielanie klientów do pracowników (dodawanie, usuwanie z listy) 2.8. Przeglądanie listy klientów, pracowników, logistyków, administratorów, użytkowników 2.9. Wyświetlanie ekranu z pełnymi danymi osobowymi, oraz kontem użytkownika 2.10. Filtrowanie użytkowników według stanowiska (logistycy, administratorzy, pracownicy, klienci) 2.11. Sortowanie klientów według nazwy firmy, nazwiska i imienia 2.12. Sortowanie pracowników/administratorów/logistyków według nazwiska, imienia 2.13. Sortowanie użytkowników według nazw loginów 5
3. Model koncepcyjny 3.1. Lista encji (8) 3.1.1. Zamówienie #Id_Zamówienie *Id_Klient *Id_Blokada (identyfikator rekordu blokady w TabBlokady, dla użytkownika) CzasRealizacji (ile dni mamy na realizację zamówienia) Status (w jakim stanie jest zamówienie: złożone, w trakcie edycji, wysłane ) ZmianaAdresu (znak T -tak, lub N -nie, inf. że podano nowy adres dostawy) DataZłożenia DataRealizacji NrFaktury Uwagi 3.1.2. Lista Produktów #Id_Zamówienia *Id_Produkt Ilość 3.1.3. Produkt #Id_Produkt *Id_Producent (identyfikator producenta produktu) Cena (cena jednostkowa netto produktu) Jednostka (jednostka w jakiej domyślnie sprzedawany jest produkt, np. szt.) Nazwa 3.1.4. Producent #Id_Producent KodPocztowy (Pięciocyfrowy bez myślnika) NIP PESEL REGON Tel Imie Nazwisko Miejscowosc (miejsce zamieszkania) Poczta (miejscowość gdzie znajduje się poczta) Email Adres Firma (nazwa firmy producenta) Uwagi (ewentualne dodatkowe informacje) 6
3.1.5. Użytkownik #Id_Użytkownik *Id_Blokada (identyfikator rekordu blokady w TabBlokady, dla użytkownika) *Id_Stanowisko (indentyfikator stanowiska pracownik, administrator ) Logowanie (Ostatnia data/gdzina logowania użytkownika do systemu) StatusPrawny (dane osobowe) KodPocztowy (dane osobowe) NIP (dane osobowe) PESEL (dane osobowe) REGON (dane osobowe) Uprawnienia (lista typu 1.0.0.0.1.0.1.1.0.0.0, gdzie 1 to pozwolenie, 0 jego brak) Tel (dane osobowe) Login (nazwa użytkownika) Imie (dane osobowe) Haslo Nazwisko (dane osobowe) Miejscowosc (dane osobowe) Poczta (dane osobowe) Email (dane osobowe) Adres (dane osobowe) Firma (dane osobowe) 3.1.6. Stanowisko #Id_Stanowisko (identyfikator klucz gł.) Nazwa (krótka nazwa stanowiska) 3.1.7. Przydzielenie #Id_Klient (Identyfikator klienta przydzielonego do pracownika ) *Id_Pracownik (identyfikator pracownika, któremu przydzielono klientów) 3.1.8. Uprawnienie #Id_Uprawnienie Nazwa Opis # - klucz główny (PRIMARY) * - klucz obcy (FOREIGN) 7
3.2. Diagram koncepcyjny Na Rys.3.2.1 przedstawiono diagram koncepcyjny zaprojektowanej bazy danych. Rys.3.2.1. Diagram koncepcyjny 8
4. Model relacyjny 4.1. Tabele W modelu relacyjny uwzględniona została dodatkowa encja TabBlokady, odpowiadająca za zabezpieczenie rekordów przed błędami, wynikającymi z wielodostępu do rekordów pewnych tabel (encji). Tabele zawierające klucz obcy Id_Blokada zawierają właśnie rekordy, do których może mieć dostęp tylko jeden użytkownik równocześnie (w trakcie edycji). 4.1.1. TabZamowienia Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Zamowienie INT Id_Klient INT Id_Blokada BIGINT CzasRealizacji TINYINT Status CHAR(1) DataZlozenia DATE DtaRealizacji DATE NrFaktury CHAR(14) Uwagi MEDIUMTEXT 4.1.2. TabListaProduktow Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Zamowienie INT Id_Produkt INT Ilosc FLOAT 4.1.3. TabProdukty Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Produkt INT Id_Producent INT Cena FLOAT Jednostka VARCHAR(15) Nazwa VARCHAR(180) 4.1.4. TabProducenci Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Producent INT KodPocztowy CHAR(5) NIP CHAR(10) PESEL CHAR(11) REGON CHAR(14) Tel VARCHAR(17) Imie VARCHAR(20) Nazwisko VARCHAR(35) Miejscowosc VARCHAR(45) Poczta VARCHAR(45) Email VARCHAR(50) Adres VARCHAR(55) 9
Firma VARCHAR(80) Uwagi MEDIUMTEXT 4.1.5. TabUzytkownicy Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Uzytkownik INT Id_Blokada BIGINT Id_Stanowisko CHAR(1) Logowanie DATETIME StatusPrawny CHAR(1) KodPocztowy CHAR(5) NIP CHAR(10) PESEL CHAR(11) REGON CHAR(14) Uprawnienia CHAR(29) Tel VARCHAR(17) Login VARCHAR(20) Imie VARCHAR(20) Haslo VARCHAR(35) Nazwisko VARCHAR(35) Miejscowosc VARCHAR(45) Poczta VARCHAR(45) Email VARCHAR(50) Adres VARCHAR(55) Firma VARCHAR(80) 4.1.6. TabPrzydzielenia Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Klient INT Id_Pracownik INT 4.1.7. TabStanowiska Atrybut Typ Klucz główny Klucz obcy NULL Bez znaku Id_Stanowisko INT Nazwa VARCHAR(45) 4.1.8. TabUprawnienia Atrybut Typ Klucz Klucz NULL Bez znaku główny obcy Id_Uprawnienie TINYINT Nazwa VARCHAR(200) Opis MEDIUMTEXT 4.1.9. TabBlokady Atrybut Typ Klucz główny Klucz NULL Bez znaku obcy Id_Blokada BIGINT Locked CHAR(1) LockUserId INT LockTime DATETIME LockDelay SMALLINT 10
4.2. Diagram ERD Na Rys.4.2.1 przedstawiono diagram relacyjny zaprojektowanej bazy danych. Rys.4.2.1. Diagram relacyjny 11
4.3. Indeksy 4.3.1. TabZamowienia PRIMARY PRIMARY Id_Zamowienie idxblokada FOREIGN Id_Blokada idxklient FOREIGN Id_Klient idxstatus INDEX Status 4.3.2. TabListaProduktow PRIMARY PRIMARY Id_Zamowienie Id_Produkt idxprodukt FOREIGN Id_Produkt idxzamowienie FOREIGN Id_Zamowienie 4.3.3. TabProdukty PRIMARY PRIMARY Id_Produkt idxproducent FOREIGN Id_Producent idxsortbyname INDEX Nazwa 4.3.4. TabProducenci PRIMARY PRIMARY Id_Produkt idxsortbyname INDEX Firma Nazwisko Imie 4.3.5. TabUzytkownicy PRIMARY PRIMARY Id_Uzytkownik idxblokada FOREIGN Id_Blokada idxstanowisko FOREIGN Id_Stanowisko idxsortbyname INDEX Firma Nazwisko Imie 4.3.6. TabPrzydzielenia PRIMARY PRIMARY Id_Klient idxpracownik FOREIGN Id_Pracownik idxklient FOREIGN Id_Klient 4.3.7. TabStanowiska PRIMARY PRIMARY Id_Stanowisko 12
4.3.8. TabUprawnienia PRIMARY PRIMARY Id_Uprawnienie 4.3.9. TabBlokady PRIMARY PRIMARY Id_Blokada 5. Mała instrukcja obsługi System OMEGA został zaprojektowany w taki sposób, by ułatwić zarządzanie zarówno zamówieniami, jak i zasobami ludzkimi. Jeżeli chodzi o zamówienia system oferuje możliwość składania zamówień drogą logowania do systemu i wyboru odpowiedniej opcji. Poniżej znajduje się ekran systemu logowania. Wpisujemy, otrzymane od administratora systemu, login i hasło użytkownika, które pozwolą zalogować się do systemu. Rys.5.1. Ekran logowania do systemu Kolejny krok to szybkie zapoznanie się z panel użytkownika, który tak naprawdę stanowi właściwy system (Rys.5.2). Po lewej stronie widoku oknie przeglądarki widzimy menu główne do zarządzania dostępnymi dla naszego konta opcjami. Może to być moduł zamówień, gdzie składamy zamówienia, przeglądamy je i edytujemy. Może to być moduł użytkowników, gdzie administrator zarządza kontami użytkowników i wiele innych. Aktualnie zajmiemy się kontem użytkownika o typie klient. Chodzi tutaj o pokazanie stosowania systemu w praktyce. Zatem kliknijmy w menu na opcję Złóż zamówienie. Mamy przed sobą łady formularz, którym się posłużymy (Rys.5.3). Mamy do dyspozycji możliwość wyszukiwania produktów po nazwach oraz dynamiczne dodawanie ich do listy, gdzie możemy ją dowolnie customizować. Na uwagę zasługuje sposób obsługi tego formularza, nie wybranie żadnych produktów i próba zatwierdzenia zamówienia natychmiast jest sygnalizowana. Jest to autorska walidacja, formularzy, której wykonanie trwało niezwykle długo, czego efekty widzimy. 13
Rys.5.2. Widok panelu użytkownika - zwężony Rys.5.3. Formularz zamówienia 14
Mamy do dyspozycji oczywiście listingi wszystkich rekordów, do których zalogowany użytkownik ma dostęp przykład dla zamówień przedstawia Rys.5.4. Oczywiście widzimy dostępne również dodatkowe opcje z racji tego, że zalogowany jest administrator, który posiada dodatkowe uprawnienia do wszystkiego, co można zrobić w systemie. Rys.5.4. Tabela rekordów - zamówienia Niektóre z pól rekordów tabel stanowią linki do pewnych funkcjonalności, najeżdżając myszką na link możemy się dowiedzieć do czego służy. Taka koncepcja jest stosowana w całym systemie. Jeżeli chodzi o tabele dodatkowo po prawej stronie często pojawiają się ikonki pudełek, które oznaczają możliwość edycji pewnych danych (rekordów), co również jest opisane podpowiedzią. Na koniec wspomnę tylko o samym sposobie użytkowania systemu na co dzień. System tak naprawdę opisany przez drogę, jaką pokonuje produkt. Najpierw zamówienie zostaje złożone prze klienta, bądź pracownika w imieniu jednego z klientów mu przydzielonych. Następnie zamówienie po skończeniu tworzenia i zatwierdzeniu otrzymuje status w trakcie edycji E, dopiero po jego zatwierdzeniu podczas edycji zamówienia lub w tabeli otrzymuje status zaakceptowane A i trafia do logistyka lub pracownika, który się dalej nim zajmuje. Któraś z tych dwóch osób ustala czas po jakim zostanie zrealizowane zamówienie i ustawia ten czas w widoku tabeli zamówień. Ten czas jest informacją dla klienta, że zamówienie zostanie zrealizowane maksymalnie w ciągu iluś dni od daty złożenia. Kolejny krok to wysłanie zamówienia nadanie mu statusu w drodze do klienta lub wysłane W. Gdy zamówienie dociera do klienta, logistyk zatwierdza zamówienie, jako zakończone X. Taki proces powtarza się dla każdego zamówienia. 15
6. SQL skrypty 1. #ZESTAW PRZYKŁADOWYCH SKRYPTÓW SQL ZASTOSOWANYCH W SYSTEMIE 2. #Informacje na temat wybranego użytkownika 3. #Pominieto Super-Uzytkowników, gdyż nie jest tio wymagane 4. #podczas wyświetlania danych dla normalnego użytkownika systemu 5. SELECT 6. u.id_uzytkownik AS id, u.id_stanowisko, u.logowanie AS lo, 7. u.kodpocztowy AS kp, u.nip AS n, u.pesel AS pes, u.regon AS reg, 8. u.tel AS t, u.login AS l, u.miejscowosc AS m, u.poczta AS pocz, 9. u.email AS e, 10. IF(ISNULL(u.Imie), '', u.imie) AS i, 11. IF(ISNULL(u.Nazwisko), '', u.nazwisko) AS naz, 12. IF(ISNULL(u.Firma), '', u.firma) AS f, 13. st.nazwa AS stan, 14. (SELECT COUNT(*) FROM tabprzydzielenia przyd 15. WHERE przyd.id_pracownik=u.id_uzytkownik) AS pk 16. FROM tabuzytkownicy u 17. LEFT JOIN tabstanowiska st ON u.id_stanowisko=st.id_stanowisko 18. WHERE u.id_stanowisko!='s' 19. ORDER BY CONCAT(n,i,f); 20. #Zestaw zamówień, które zostały złożone - zaakceptowane wraz 21. #z dołączonymi zestawami przyporządkowanych produktów 22. SELECT 23. z.id_zamowienie AS id_zam, z.status, z.datazlozenia AS dz, 24. z.id_klient, 25. z.status AS s, z.kwota AS k, 26. z.datazlozenia AS dz, z.uwagi AS uw, z.nowyadres AS na, 27. u.firma AS f, u.miejscowosc AS m, u.adres AS a, 28. u.imie AS im, u.nazwisko AS naz, 29. u.kodpocztowy AS kp, u.poczta AS pocz, 30. tp.*, p.cena AS c, p.jednostka AS j, p.nazwa AS n 31. 32. FROM tabzamowienia z 33. LEFT JOIN tabuzytkownicy u ON z.id_klient=u.id_uzytkownik 34. LEFT JOIN tablistaproduktow tp ON z.id_zamowienie=tp.id_zamowienie 35. LEFT JOIN tabprodukty p ON tp.id_produkt=p.id_produkt 36. WHERE z.status!='e'; 37. #Dane dla zamowienia o id=19 38. SELECT 39. z.id_zamowienie AS id, z.id_klient, 40. z.status AS s, z.kwota AS k, 41. z.datazlozenia AS dz, z.uwagi AS uw, z.nowyadres AS na, 16
42. u.firma AS f, u.miejscowosc AS m, u.adres AS a, 43. u.imie AS im, u.nazwisko AS naz, 44. u.kodpocztowy AS kp, u.poczta AS pocz 45. FROM tabzamowienia z 46. LEFT JOIN tabuzytkownicy u ON z.id_klient=u.id_uzytkownik 47. WHERE z.id_zamowienie=19 48. #Zestawy list produktów do poprzednich zamówień - tutaj osobno 49. #Produkty do info zamówienia - tutaj tylko dla zamówienie o id=19 50. SELECT tp.*, p.cena AS c, p.jednostka AS j, p.nazwa AS n 51. FROM tablistaproduktow tp 52. LEFT JOIN tabprodukty p ON tp.id_produkt=p.id_produkt 53. WHERE tp.id_zamowienie=19; 17