• User Newbie

    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 ----- caratteristica

    1 --------cpu --------------numero core
    2 -------- hard disk-------- memoria
    3 --------cpu--------------- marca

    **valori caratteristiche **
    id_caratteristica ------ valore_caratteristica ------- id_prodotto

    1------------------------- 2 core -------------------------54
    3 -------------------------nome_marca ------------------32
    2 -------------------------70 GB ------------------------- 22

    Mettiamo 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'??


  • User Attivo

    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?


  • User Newbie

    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


  • User Attivo

    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.


  • User Newbie

    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 elencate

    scegliendo uno o più filtri mi trova solo le cpu che corrispondono ai filtri scelti.