Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dwie tabele łączone
Forum PHP.pl > Forum > Bazy danych > MySQL
mihmih
Witam,

spróbuję wyjaśnić mój problem...Mam tabelę z produktami, z zamówieniami i łącząca te 2 tabele (ID, ID_ZAM, ID_PROD, ilosc). Mam zapytanie, gdzie podając numer zamówienia generowana jest lista produktów z ilościami na to zamówienie. Proste.

Ale niektóre zamówienia są wyjątkowe (wyjatek = TRUE) i chciałbym tym samym zapytaniem dla nich generować całkiem inną listę produktów. To samo zamówienie, a całkiem inna lista produktów. Wydaje mi się że sa 2 możliwości:

Albo w tabeli łączonej dodać nową kolumnę "ID_produkt_wyjatek" i w zapytaniu przy warunku połączenia tabel "produkt" i "laczona" dać
  1. WHERE ID_produkt = CASE WHEN wyjatek = 1 THEN ID_produkt_wyjatek ELSE ID_PROD END...


Lub stworzyć drugą tabele łączoną....ale pisząc to stwierdzam że to chyba gorszy pomysł. Czy przy tym pierwszym pomyśle wszystko będzie ok i czy warunkach łączenia tabel można stosować takie funkcje jak case when lub coalesce?
com
2 tabela, bo to zupełnie innym model danych jest
trueblue
Z jaką tabelą jest powiązane id_produkt_wyjatek?
mihmih
ID_produkt_wyjatek = produkt,ID_produkt

Chodzi o to żeby zależnie od tego czy pole bolean (wyjatek) w tabeli zamówienia ma wartość 1 lub 0 lista produktów generowała się w tym samym zapytaniu czasami przez połączenie laczona.ID_produkt_wyjatek = produkt.ID_produkt (wyjatek = 1), a czasami przez połączenie laczona.ID_PROD = produkt,ID_produkt

No chyba że lepiej zrobić osobną tabelę łączoną, tylko jak wtedy w zapytaniu kazać relacji wybierać różne tabele w zależności od warunku?
trueblue
A czym się różni sytuacja kiedy id_produkt_wyjatek=3 oraz id_produkt=3, przecież i tak kierują do tego samego produktu?
mihmih
standardowo chcę mieć listę produktów z połączenia laczona.ID_PROD = produkt,ID_produkt


Ale w wyjątkowych sytuacjach chciałbym dopisywać w pustą do tej chwili kolumnę "laczona.ID_produkt_wyjatek" numery ID innych wyrobów niż w kolumnie ID_PROD i generować inną listę produktów gdy zamowienia.wyjatek = 1
trueblue
Skoro wyjątkowe produkty determinuje pole wyjatek w zamówieniu, to po co dodatkowe pole id_produkt_wyjatek? Wystarczy jedno pole id_produkt.
Ewentualnie gdyby w jednym zamówieniu pojawiały się zwykłe i wyjątkowe produkty, to takie pole można przenieść z tabeli zamówień do tabeli produktów.
com
Popieram trueblue, to będzie najlepsze rozwiązanie.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.