Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dwie tabele łączone
mihmih
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


2 tabela, bo to zupełnie innym model danych jest
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Z jaką tabelą jest powiązane id_produkt_wyjatek?


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #4





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A czym się różni sytuacja kiedy id_produkt_wyjatek=3 oraz id_produkt=3, przecież i tak kierują do tego samego produktu?


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #6





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Popieram trueblue, to będzie najlepsze rozwiązanie.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 08:15