Ho le tabelle
codice:
PRODOTTI
id|Nome |Prezzo |Descrizione
1 |Portatile |150,00 |Computer portatile
codice:
CATEGORIE ATTRIBUTI
id|Categoria attributo
1 |RAM
2 |Processore
3 |Schermo
codice:
VALORI ATTRIBUTI
id|id_categoria|Valore attributo
1 |1 |256 MB
2 |1 |512 MB
3 |1 |1 GB
4 |2 |Pentium 4
5 |2 |AMD Athlon
6 |3 |17" Whidescreen
7 |3 |15" 4:9
codice:
RELAZIONE PRODOTTI ATTRIBUTI
id|id_prodotto|id_attributo
1 |1 |3
2 |1 |5
3 |1 |6
Quindi seleziono gli articoli unendo le tabelle in questo modo (in questo esempio per selezionare
articoli che montano il pentium 4 (Tabella valori attributi id = 4)
Codice PHP:
$query = "SELECT FROM prodotti
LEFT JOIN relazione_prodotti_attributi AS rel ON rel.id_prodotto = prodotti.id
LEFT JOIN valori_attributi AS attr ON rel.id_attributo = attr.id
WHERE (--alcune mie condizioni--) AND attr.id = 4;";
Fino a qui tutto a posto, mi ritorna i portatili che montano i pentium 4 ma se provo a fare ua ricerca incrociata ad esempio i portatili con pentium 4 (id = 4) e schermo 17" whidescreen (id = 6), cioe':
Codice PHP:
$query = "SELECT FROM prodotti
LEFT JOIN relazione_prodotti_attributi AS rel ON rel.id_prodotto = prodotti.id
LEFT JOIN valori_attributi AS attr ON rel.id_attributo = attr.id
WHERE (--alcune mie condizioni--) AND attr.id = 4 AND attr.id = 6;";
questa query non ritorna nulla
Devo forse far entrare in gioco anche la tabella CATEGORIE ATTRIBUTI?
Quest'ultima la uso per organizzare gli attributi ed evitare che quando inserisco un attributo aad un'articolo non metto ad esempio che un portatile ha un processore pentium 4 ed un amd athlon
Chi mi puo' aitare please???