Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka z polami dodawanymi przez administratora
Neider
post 8.09.2011, 18:22:20
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 30.11.2007
Skąd: Bydgoszcz

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


Witam

Na stronie której piszę umożliwiłem administratorowi, dodawanie atrybutów produktu. Posiadam 3 tabele. Produkt, Atrybuty, ProduktAtrybuty. Problem pojawia się przy wyszukiwaniu w/g tych "dynamicznych" pól. Zakładam że może byc dowolna liczba pól w.g których można szukać.

Tabela produktów:
- id
- inne pola opisujące produkt

Tabela atrybuty:
- id
- nazwa
- typ

tabela ProduktyAtrybuty:
- id
- produkt_id
- atrybut_id
- wartosc

Przykładowe dane w ProduktyAtrybuty:
ID | produkt_id | atrybut_id | wartosc
1 | 1 | 1 | 1
2 | 1 | 2 | 1
3 | 2 | 1 | 2
4 | 2 | 2 | 1

Teraz załóżmy że użytkownik chce wyszukać poprzez formularz, produkt który miałby atrybut_id 1 o wartości 1 oraz atrybut_id 2 również o wartości 1.
Próbowałem wielu zapytań jednak nic co by działało przy jednym zapytaniu mi nie udało się napisać:

SELECT p.produkt_id FROM produktyatrybuty p WHERE (p.atrybut_id = 1 AND p.wartosc = 1) OR (p.atrybut_id = 2 AND p.wartosc = 1)

Dla każdego kolejnego atrybutu, jeżeli uczestniczyłby w wyszukiwaniu dodawałbym kolejną parę OR (p.atrybut_id = id AND p.wartosc = wartosc).
To zapytanie daje mi praktycznie ile razy dany produkt występuje w atrybutach i jeżeli ilośc wystapień = ilości atrybutów w/g których wyszukuje, wtedy zapisuje ID i następnie wyszukuje juz produkty w ID w tablicy. Rozwiązanie to uważam za beznadziejne, jednak nic lepszego mi nie wpadło do głowy na razie. Ktoś miał może z czymś podobym do czynienia? Mógłby mnie ktoś nakierować, czy da się to załatwić jakoś jednym zapytaniem wyciągającym od razu produkty?

Ten post edytował Neider 8.09.2011, 18:23:02
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 11:05