Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] filtrowanie po atrybutach, zgłupiałem...
Forum PHP.pl > Forum > Bazy danych
Avatarus
Może to brak snu dziękuje kochanej 6 miesięcznej córce, ale nie mogę przeskoczyć pewnego problemu.

robię sklep i aktualnie siedzę nad filtrowaniem produktów po atrybutach.
no i mam tabele produkty gdzie jest np ID i nazwa
i jest tabela produktu_atrybuty gdzie jest spi atrybutów
no i tabela produkty_atrybuty_wartosci gdzie są zapisane atrybuty produktów (jeden produkt może ich mieć kilka)

no i teraz jak zrobić filtrowanie tak żeby wybrać produkty które mają np wybrane dwa atrybuty zdefiniowane w konkrenty sposób, np kolor i rozmiar.

spłodziłem takie zapytanie:
  1. SELECT p.id,p.nazwa_pl FROM produkty p,produkty_atrybuty_wartosci paw WHERE (paw.atrybut_id=2 AND paw.wartosc=4) AND (paw.atrybut_id=3 AND paw.wartosc=0) AND p.id=paw.produkt_id GROUP BY p.id


Jak ugryźć to zapytanie żeby to zadziałało? Wiem jak to zrobić z OR'em zamiast AND'a ale nie o to mi chodzi, ma pokazać tylko i wyłącznie te produkty które spełniają wymagania wszystkich filtrów.

z góry dzięki
mmmmmmm
  1. SELECT p.id,p.nazwa_pl FROM produkty p JOIN produkty_atrybuty_wartosci paw ON p.id=paw.produkt_id WHERE (paw.atrybut_id,paw.wartosc) IN ((2,4),(3,0)) GROUP BY p.id, p.nazwa_pl HAVING COUNT(DISTINCT paw.atrybut_id)=2
Avatarus
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.