Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Spełnianie warunków w join
Forum PHP.pl > Forum > Bazy danych > MySQL
kilaz91
Witam,
potrzebuję wybierać elementy które zawierają konkretne odpowiedzi w zewnętrznych tabelach.
Obrazując:
- wybieram kilka cech, np "wifi", "aparat" z wyszukiwarki.
- wybieram telefon który ma podkategorie:

SELECT telefony t
JOIN t.cechy c
WHERE (c.wartosc = '%wifi%' AND c.nazwa = 'łączność') AND (c.wartosc = '%aparat%' AND c.nazwa = 'multimedia')

aczkolwiek sprawa wygląda tak że w baza danych nie posiada jednej kolumny lecz kilka do których się łączy

wynik bez where:
['nazwa'=>'sony',
'cena'=>1000,
'cechy'=>[
[0]=>['nazwa'=>'multimedia','wartosc'=>'aparat,głośniki,latarka'],
[1]=>['nazwa'=>'łączność','wartosc'=>'wifi,bluetooth,lte'],
]

w zapytaniu powyżej wybiera wyniki które zawierają w jednym ciągu zarówno wifi jak i aparat (tutaj takich nie ma bo jeden warunek jest w jednym a drugi w drugim) ale potrzebuję wyciągnąć te telefony które w dwóch różnych wierszach zawiera w jednym joinie wifi a w drugim aparat.

Trochę to skomplikowane aczkolwiek tutaj cechy są wpisywane ręcznie.

Jest to możliwe ?

Z góry dzięki
nospor
1) By uzywac %% w warunku to masz uzywac LIKE a nie =
2) Musisz dac tyle JOINow ile szukasz roznych nazw cech. W on masz dac daną cechę i dana wartosc. A potem w WHERE masz miec dodatkowo tyle AND ow ile JOINow
Przyklad:

SELECT telefony t
left JOIN cechy c1 on (blabla)
left JOIN cechy c2 on (blabla)
WHERE c1.nazwa is not null and c2.nazwa is not null

w blabla masz wstawic danyc warunek łączenia po nazwie i wartosci
kilaz91
it's working smile.gif
Dzięki wielkie!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.