Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Filtr produktów
starcode
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.06.2006

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


Witam!

Piszę obecnie skrypt bazy produktów (dajmy na to komputerów, gdzie mamy monitory, laptopy, drukarki itp. itd.).
Pojawia się problem / pytanie jak wykonać filtrowanie produktów (czyli pokazywanie produktów o określonych paramterach, np.: matryca, bateria, system operacyjny, procesor, producent itp.).

Tabela produktu zawiera podstawowe dane (id, nazwa, cena, opis, zdjęcie, grupa_id, kategoria_id, podkategoria_id).
Tabela parametrów zawiera: id, id_paramteru, id_produktu, wartosc_paramteru
Tabela nazw paramterów zawiera id, nazwa

Tabela nazw param. jest połączona z tabelą param. relacją jeden do wielu (jedna nazwa param. do wielu wartości param.)
Tabela param. z tabelą produktów połączona jest relacją wiele do jednego (jeden produkt może mieć wiele paramterów)

Pytanie: Jak teraz pobrać te produkty, które mają np. system operacyjny = Windows XP i producent = ASUS?

Jest to dla mnie teraz zagadka i nie wiem jak ugryźć temat.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
starcode
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.06.2006

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


Możesz podać przykładowe zapytanie?

Graficznie struktura tabeli wygląda tak:

tabela nazwy_parametrow

Kod
+-------+---------------------+
|  id   | nazwa_paramteru     |
+-------+---------------------+
|   1   | system operacyjny   |
+-------+---------------------+
|   2   | producent           |
+-------+---------------------+
|   3   | procesor            |
+-------+---------------------+
|   4   | przekatna matrycy   |
+-------+---------------------+


tabela parametry (łączy wartosci paramterów z nazwami paramterow i przypisuje do konkretnego produktu)

Kod
+----------------+----------------+------------------------------+
| id_paramteru   |  id_produktu   | wartosc_paramteru            |
+----------------+----------------+------------------------------+
| 1              |   20           | Windows XP                   |
+----------------+----------------+------------------------------+
| 1              |   21           | Windows XP                   |
+----------------+----------------+------------------------------+
| 1              |   22           | Windows Vista                |
+----------------+----------------+------------------------------+
| 1              |   23           | Windows XP                   |
+----------------+----------------+------------------------------+
| 1              |   24           | Brak systemu                 |
+----------------+----------------+------------------------------+
| 2              |   20           | Asus                         |
+----------------+----------------+------------------------------+
| 2              |   21           | Acer                         |
+----------------+----------------+------------------------------+
| 2              |   22           | Asus                         |
+----------------+----------------+------------------------------+
| 2              |   23           | Asus                         |
+----------------+----------------+------------------------------+
| 2              |   24           | Asus                         |
+----------------+----------------+------------------------------+


I chcę pobrać produkty, które mają:
(`id_paramteru`='1' AND `wartosc_paramteru`='Windows XP') AND (`id_paramteru`='2' AND `wartosc_paramteru`='Asus')

Powinno zwrócić rekordy (produkty) o `id_produktu: 20 i 23.

Oczywiście istnieje jeszcze tabela produkt, która ma ID i owo ID jest wpisane w tabeli `parametry` w polu `id_produktu`

Ten post edytował starcode 22.03.2009, 21:46:10
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: 6.10.2025 - 10:20