Potrzebuje pomocy przy powiązaniu dwoch tablic:
kategorie
id | kategoria
1 | apartament
2 | dom mieszkalny
3 | budynek jednorodzinny
4 | wieżowiec
5 | mieszkanie
......
miejscowosci
id | miejscowosc
1 | warszawa
2 | poznan
3 | wroclaw
4 | oborniki
5 | Komorniki
nieruchomosci
id | mid | kid |nazwa | [oznaczają odpowiednio id oferty | id miejscowosci | id_kategorii]
1 | 1 | 2 |Apartament 34 m2 w Warszawie
2 | 2,4,5 | 1,5 |Mieszkanie w okolicy Poznania
Przy założeniu ze dla danej oferty nieruchomości można wybrac tylko jedną kategorię i jedną miejscowość powiązanie tych tabel wygladaloby następująco (jak w przypadku pierwszego wiersza w tabeli nieruchomosci):
Select nieruchomosci.id, nazwa, miejscowosc, kategoria
from nieruchomosci, kategorie, miejscowosci
where nieruchomosci.mid=miejscowosci.id
and nieruchomosci.kid=kategorie.id
To zapytanie w przypadku pierwszym zwróci wynik:
1, Apartament 34m2 w Warszawie, Warszawa, apartament
A jak wykonać zapytanie aby powiązać drugi wiersz (możliwość wielokrotnego wyboru miejscowosci i kategorii), aby dała wynik
2, Mieszkanie w okolicy Poznania, Poznań,Oborniki,Komorniki, apartament,mieszkanie
Zakładam, że można wybrać kilka miejscowosci i kilka rodzajów
Nie chciałbym tworzyć dodatkowych kolumn dla dodatkowych miejscowosci i dodatkowych kategorii w bazie nieruchomosci: np mid1, mid2, mid3, kid1, kid2, kid3.
Czy można skonstruować takie zapytanie przy zaprezentowanej przeze mnie strukturze tabeli i polach? czy bedzie ono optymalne. Co proponujecie?