![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 3.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
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 Ten post edytował kilaz91 20.01.2015, 12:53:22 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
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 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 3.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
it's working
![]() Dzięki wielkie! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 23:21 |