![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 17.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak się domyślacie ... mam problem
![]() Z zapytaniem do MySQLa ... Chodzi o wyszukiwarke i ogolnie rzecz biorac o relacje wiele do wielu . Sprawa wyglada tak . Jest tabela produktow (mz_elementy_2) jest tabela cech(mz_klasyfikacje_2) dla danego produktu . Element moze miec wiele cech , cechy moga wystepowac w wielu elementach . Struktura : mz_elementy_2 : id_element nazwa_element mz_klasyfikacje_2: id_klasyfikacje nazwa_klas i tabela posrednia: klasyfikacje_elementy id_klasyfikacje id_element chodzi o zapytanie wyszukujace . Zakladamy ze chce wyszukac wszystkie produkty ktore posiadaja okreslone cechy (klasyfikacje) . Czyli produkty ktore mają takie klasyfikacje (id_klasyfikacje = 7 , id_klasyfikacje = 8 i id_klasyfikacje = 4) . Gdzies sie zaciolem i nie moge drgnac juz chwile ... bede bardzo wdzieczny ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 611 Pomógł: 19 Dołączył: 28.02.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
zakładam że potrzebujesz użyć joinów
SELECT costam,cecha from Tabela1 LEFT JOIN TabelaPrzejsciowa ON costamId= kluczObcyTocostamId LEFT JOIN Tabla2 ON kluczobcyKlasyfikacjaId= klasyfikacjaId -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 17.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
zakładam że potrzebujesz użyć joinów SELECT costam,cecha from Tabela1 LEFT JOIN TabelaPrzejsciowa ON costamId= kluczObcyTocostamId LEFT JOIN Tabla2 ON kluczobcyKlasyfikacjaId= klasyfikacjaId Wszystko sie zgadza ale mi chodzi o to konkretne wyszukanie . Bo JOIN ami zepne wszystko tak jak powinno byc ale chodzi o to ze chce wyszukac produkty ktore maja okreslone cechy . Ta twoja konstrukcja wyswietli mi poprostu wszystkie produkty ze wszystkimi cechami (klasyfikacjami) a mi chodzi o konkretne wyszukanie produktow ktore maja okreslone cechy . |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 17.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
cos w tym stylu.. Cos nie w tym stylu . Bo chodzi o to ze czym wiecej parametrow (id_klasyfikacje) podam tym powinno byc mniej elementow . W twoim zapytaniu bedzie dokladnie na odwrot . Inaczej mowiac ... jezeli ja mu podam ze ma byc element z klasyfikacjami 6,7,8 to u ciebie wyskocza wszystkie ktore beda mialy 6 lub 7 lub 8 a u mnie musza miec 6 i 7 i 8 ... wiec wypadalo by wpisac AND zamiast OR ![]() No i pozatym myslalem zeby dodac wiecej aliasow (czyli zeby bylo k.id_klasyfikacje=7 AND k1.id_klasyfikacje=8 itd... ale to jest jakies nie eleganckie pozatym strasznie by mi sie rozbudowalo bo bym mial ponad 30 klasyfikacji wiec sami rozumiecie ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
ok nie zrozumielismy sie. Wymyslilem inne rozwiazanie:
Dziala przy zalozeniu ze pilnujesz zeby w tabeli laczacej nie powtarzaly sie te same rekordy. Nie jest to idealne rozwiazanie bo ilosc musi byc rowna ilosci id_klasyfikacji jaka sprawdzasz. Ten post edytował ikioloak 10.10.2006, 00:26:57 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 10:43 |