Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] projekt bazy a poruszanie sie po tabelach, klaruje mi sie pomysl... madrzejszych prosze o porade :)
esos
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Po pierwsze:
Cytat(esos @ 27.08.2010, 20:04:38 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 01:45