![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 0 Dołączył: 7.08.2005 Skąd: zabrze Ostrzeżenie: (0%) ![]() ![]() |
posiadam tabele (TB1), w ktorej przechowywane sa informacje podstawowe (nazwa, adres, woj, opis, itd) na temat podmiotow gospodarczych.
musze przechowywac dane o uslugach ktore moga swiadczyc podmioty, wiec... 2ga tabela (TB2) zawiera uslugi (id_uslugi|nazwa_uslugi). musialem jakos powiazac podmioty gospodarcze z uslugami, wiec stawiam trzecia tabele (TB3) - powiazania (id|id_uslugi|id_podmiotu), gdzie jeden podmiot moze miec przypisanych kilka uslug (czyli jest kilka rekordow gdzie wystepuje id_podmioty z przypisanymi mu roznymi id_uslug). jak rozwiazac zapytaniem sytuacje, gdy Uzytkownik strony zapyta: interesuja mnie interesuja mnie podmioty, ktore sa z woj X (czyli dane z TB1), oraz wykonuje uslugi Y, Z, V, W (dane z TB3)? ewentualnie w jaki inny sposob ustalic w miare sensownie powiazania pomiedzy podmiotami i uslugami zakladajac, ze uslugi musza byc zeslownikowa w taki sposob, by latwo dodawac kolejne rekordy (uslugi) do tabeli? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Po pierwsze:
trzecia tabele (TB3) - powiazania (id|id_uslugi|id_podmiotu) Kolumna id jest tutaj kompletnie zbędna. Klucz główny powinien być ustawiony na dwóch kolumnach jednocześnie: id_uslugi i id_podmiotu. Ale nawiązując do pytania: masz 2 możliwe scenariusze działań: 1. Chcesz znaleźć firmę, która świadczy co najmniej 1 spośród wybranych usług. 2. Świadczy wszystkie wybrane usługi. W pierwszym przypadku masz sprawę jasną: robisz JOINa i jako warunek dajesz id_uslugi IN (X, Y, Z). W drugim przypadku musisz dodatkowo użyć grupowania (GROUP BY) i sprawdzić, czy ilość usług jest poprawna (HAVING COUNT(powiazania.id_uslugi) = 3, gdzie 3 to ilość wybranych usług). Ten post edytował phpion 28.08.2010, 09:59:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 01:45 |