- Home
- Categorie
- Coding e Sistemistica
- Coding
- Tabella caratteristiche dei prod
-
Tabella caratteristiche dei prod
Ciao ,
sto creando un e-commerce ma ho un problema,
nel database ho una tabella prodotti che contiene diversi tipi di prodotti ad esempio hard disk , cpu , ram , ecc.
ogni tipo di prodotto ha delle caratteristiche quindi ho pensato di creare una tabella che contiene il nome della caratteristica associata ad una tipologia di prodotto e un altra tabella che contiene il prodotto e il valore della sua caratteristica.
Esempio**caratterisitche **
id -------tipologia ----- caratteristica1 --------cpu --------------numero core
2 -------- hard disk-------- memoria
3 --------cpu--------------- marca**valori caratteristiche **
id_caratteristica ------ valore_caratteristica ------- id_prodotto1------------------------- 2 core -------------------------54
3 -------------------------nome_marca ------------------32
2 -------------------------70 GB ------------------------- 22Mettiamo io voglia filtrare la ricerca per far uscire solo le cpu con 2 core , faccio una select che mi va a estrarre l' id_prodotto dove l' id_caratteristica è quello del numero di core e il valore_caratteristica è 2 core .
Fin qui tutto ok, il problema nasce quando ci sono più caratteristiche per una tipologia .....se io voglio estrarre le cpu che hanno 2 core e hanno una determinata marca come faccio'??
-
Quindi hai una tabella con i computer e una seconda tabella con le caratteristiche generali. Ok.
Ogni computer ha le sue caratteristiche che saranno gli ID delle caratteristiche generali.
Quello che fai tu è inserire l'id del prodotto nei valori caratteristiche. Invece lì metti tutto quello che hai: 2 core, 4 core, le varie dimensioni degli hard disk e così via. I nomi delle marche magari gestiscili in una maniera differente, magari inserendoli nella tabella del singolo prodotto.
Quando fai una ricerca basta che indichi i due valori da cercare:
[PHP]SELECT * FROM computer WHERE cpu=32 AND marca='Asus'[/PHP]
Può andare bene per quello di cui hai bisogno?
-
grazie per la risposta ...ma non è quello che cercavo , forse non sono stato abbastanza chiaro .
Innanzitutto non si tratta di computer ma di prodotti per computer singoli ,
quindi cpu, ram ecc.
come dicevo ogni prodotto ha le sue caratteristiche , queste caratteristiche mi servono per filtrare la ricerca
quindi se voglio tutte le cpu con due core vado a selezionare dalla tabella prodotti le cpu poi faccio una join con la tabella caratteristiche tramite id del prodotto e nella tabella vado a prendere quelle con 2 core...
Il problema nasce quando devo filtrare per più caratteristiche (ho fatto un esempio per marca ma potevo benissimo utilizzare un' altra caratteristica) quindi devo fare la join e prendere tutte le cpu che hanno 2 core e marca intel ....il problema è che non posso fare una select con where caratteristica='2 core' and caratteristica='intel' perchè utilizzano lo stesso campo.... per ora ho risolto con una self join , ma non so se esiste un modo più efficente di scrivere questa query
-
Per me strutturi male la tabella del database.
Scusa ma oggi ho lavorato molto e sono un pò lento. Mi spieghi come spiegheresti ad un bambino cosa vuoi ottenere? Hai scritto quello che vorresti e l'ho diciamo capito ma prova a dirlo senza lato tecnico, come visto da un utente comune.
-
ok , entro nel sito , vado nella sezione computer e li ci sono i vari prodotti senza filtri , in questa sezione posso cliccare su una delle sottosezioni indicate (cpu, ram, hard disk, ecc.) , clicco su cpu , e mi trovo le varie cpu , però ci sono delle select che mi permettono di filtrare i risultati ...per capirci c' è la select del numero di core quindi 1 core , 2 core , 4 core ecc.
select tipo di socket e i vari tipi di socket
select marca , le varie marche elencatescegliendo uno o più filtri mi trova solo le cpu che corrispondono ai filtri scelti.