Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem - Wyciągnięcie produktów wg. atrybutów, Wyciągnięcie produktów wg. atrybutów
Gaw
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 27.11.2006

Ostrzeżenie: (0%)
-----


Witam serdecznie,

mam problem z wyciągięciem produktów wg. atrybutów.

Jeden produkt ma wiele atrybutów - chcę zrobić filtr wyszukiwania i tak np. chcę znaleść produkt, który jest w kolorze niebieskim i w rozmiarze S.

Próboję z zapytaniem:

  1. SELECT `Item`.`id`, `Item`.`quantity`, `Item`.`price`, `Item`.`minimal_price`, `Item`.`name`, `Item`.`description`, `Item`.`category_id`, `Item`.`is_active`, `Item`.`flag_id`, `Item`.`is_deleted`, `Item`.`expired`, `Item`.`created`, `Item`.`updated`, `Item`.`authake_users_id`, `Item`.`slug`, `Item`.`brand_id`, `Item`.`brand`, `Category`.`id`, `Category`.`parent_id`, `Category`.`lft`, `Category`.`rght`, `Category`.`name`, `Category`.`slug`, `Category`.`created`, `Category`.`updated`, `Category`.`is_active`, `Category`.`is_deleted`, `Category`.`sort` FROM `items` AS `Item` INNER JOIN `attributes_items` AS `AttributesItem` ON (`AttributesItem`.`item_id` = `Item`.`id`) LEFT JOIN `attributes` AS `Attribute` ON (`Attribute`.`id` = `AttributesItem`.`item_id`) LEFT JOIN `categories` AS `Category` ON (`Item`.`category_id` = `Category`.`id`) WHERE `AttributesItem`.`attribute_id` = 3 AND `AttributesItem`.`attribute_id` = 20 GROUP BY `Item`.`id` ORDER BY `Item`.`created` ASC LIMIT 25


ale nie zwraca mi w ogóle żadnego rekordu. cala sprawa rozchodzi się o:
  1. WHERE `AttributesItem`.`attribute_id` = 3 AND `AttributesItem`.`attribute_id` = 20


nie rozumiem dlaczego to nie działa. jeśli dam warunek OR to wyszuka mi produkt albo niebieski albo w rozmairze S, a ja potrzebuje produkt dokładnie spełniający te 2 kryteria.

Proszę o podpowiedź jak to zrobić.

Pozdrawiam


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vermis
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 56
Dołączył: 3.06.2010
Skąd: Tarnowskie Góry

Ostrzeżenie: (0%)
-----


Tak na szybko przychodzą mi następujące rozwiązania:
- Dołącznie tabeli z atrybutami 2 razy raz dla koloru drugi raz dla rozmiaru
- możesz policzyć ile rekordów z atrybutami się dopasowało masz do wyboru 0, 1 lub 2 interesuje cię tylko 2
- możesz użyć podzapytań które sprawdzą czy istnieje wpis w tabeli z atrybutami dla koloru i osobno dla rozmiaru.

Zasadniczo struktura bazy, którą przyjąłeś jest dobra ze względu na możliwość dodawania dowolnej ilości atrybutów, ale wyszukiwanie po nich jest mało efektywne.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 02:46