Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [mysql] problema query estrazione marchi/categorie/prodotti

    ciao,

    ho un problema con la costruzione di una query.

    com'è il DB:

    tbl_marchi:
    - id_marchio
    - nome_marchio
    - img_marchio

    tbl_categorie:
    - cat_id
    - cat_name

    tbl_prodotti
    - cat_id
    - pd_id
    - pd_name

    tbl_items
    - cat_id
    - pd_id
    - id_marchio

    cosa devo fare

    quando clicco sul link di un marchio, via GET, devo estrarre:
    - il nome_marchio
    - la o le categorie di appartenenza
    - i prodotti correlati al marchio (prodotti che ovviamente appartengono anche alla categoria/e)

    la query che non va bene


    SELECT DISTINCT(nome_marchio), img_marchio, c.cat_id, cat_name, pd_name FROM tbl_marchi AS m, tbl_categorie AS c, tbl_prodotti AS p JOIN tbl_items AS i WHERE m.id_marchio = 54 AND c.cat_id = 5


    54 è un id_marchio passato via GET e 5 è il cat_id (caso reale).
    io ho nel DB per quel id_marchio:
    1 categoria associata
    4 prodotti correlati

    La query cosi com'è mi estrae tutte le categorie e non solo quelli correlati al marchio e come prodotti mi ripete sempre lo stesso per ogni categoria... :master:

    cosa sbaglio?

    grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Scusa ma è possibile che lo stesso prodotto sia correlato a più marchi? :master:

  3. #3
    Originariamente inviato da luca200
    Scusa ma è possibile che lo stesso prodotto sia correlato a più marchi? :master:
    certo... per esempio:

    categoria: utensili a mano
    prodotto:Pinze
    marchi che trattano questo prodotto: Usag, Bahco, ABC

    inoltre è possibile che un marchio, ad esempio "Arexons" appartenga a più categorie (Prodotti chimici, smalti e vernici) e quindi a vari prodotti

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: [mysql] problema query estrazione marchi/categorie/prodotti

    codice:
    SELECT nome_marchio, img_marchio, c.cat_id, cat_name, pd_name 
    FROM tbl_marchi AS m 
    JOIN tbl_items AS i ON p.id_marchio = m.id_marchio 
    JOIN tbl_prodotti as p ON i.pd_id = p.pd_id
    JOIN tbl_categorie AS c ON p.cat_id = c.cat_id 
    WHERE m.id_marchio = 54
    Quell'AND sulla categoria non ho capito cosa c'entrasse, così limiti a una sola categoria mentre hai detto di voler estrarre tutte quelle legate al marchio.

    Questa query ti restituisce una riga per ogni item legato al marchio, le categorie saranno comunque ripetute nel caso in cui più item appartengano alla stessa. Non puoi far niente per eliminare ciò se vuoi usare una sola query.

  5. #5
    grazie luca200,

    le categorie saranno comunque ripetute nel caso in cui più item appartengano alla stessa
    in effetti la query mi restituisce esattamente il numero di prodotti correlati al marchio, ma vengono, come dici tu, ripetute le categorie e il nome del marchio tante volte quanti sono i prodotti.

    ma non si può usare DISTINCT? ho provato su "nome_marchio", ma non ha funzionato.

    L'alternativa con più query? cosa dovrei fare? prima estrarre le categorie e poi i prodotti?

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da blur
    L'alternativa con più query? cosa dovrei fare? prima estrarre le categorie e poi i prodotti?
    Esatto

  7. #7
    sto cercando di estrarre i prodotti correlati al marchio:


    SELECT nome_marchio, pd_name FROM tbl_marchi AS m, tbl_prodotti AS p JOIN tbl_items AS i WHERE i.pd_id = p.pd_id AND m.id_marchio = i.id_marchio AND i.id_marchio = 54


    mi estrae i prodotti, ma mi stampa anche il nome_marchio tante volte quanti i prodotti.....
    perchèèèè

    ho provato anche con DISTINCT(nome_marchio)

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da blur
    mi estrae i prodotti, ma mi stampa anche il nome_marchio tante volte quanti i prodotti.....
    perchèèèè
    Naturale.

    Se vuoi il nome marchio una volta sola, devi fare una query ulteriore per conto suo.
    I db relazionali hanno i loro principi, non è che derogano per te

  9. #9
    Originariamente inviato da luca200
    I db relazionali hanno i loro principi, non è che derogano per te
    a no?

    scherzi a parte, grazie mille luca200.
    adesso faccio tutte le prove per vedere se è tutto ok. in caso ti stresso ancora ( sempre tu ne abbia voglia )


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.