Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481

    [mysql] un aiuto per una query

    Ho due tabelle, la classica "categorie" e la classica "prodotti", dove categorie è legata a prodotti con una relazione 1 ad n.

    TABELLA CATEGORIE
    id
    nome

    TABELLA PRODOTTI
    id
    id_categoria
    nome

    Vorrei selezionare tutte le categorie e contare quanti prodotti sono associati a quella categoria. Mi date una mano? Non riesco a buttarla giù, credo ci debba essere un JOIN e un GROUP BY, ma non mi viene.
    Grazie

  2. #2
    SELECT count(*) as numero, cat.id, cat.nome FROM prodotti as pro JOIN categorie as cat WHERE cat.id=pro.id_categoria GROUP BY cat.id

  3. #3
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da bubu77
    SELECT count(*) as numero, cat.id, cat.nome FROM prodotti as pro JOIN categorie as cat WHERE cat.id=pro.id_categoria GROUP BY cat.id
    Grazie, l'ho adattata ai nomi esatti delle tab ed è perfetta.

  4. #4
    Originariamente inviato da james
    Grazie, l'ho adattata ai nomi esatti delle tab ed è perfetta.

  5. #5
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da bubu77
    così però se non c'è nessun prodotto per la categoria la categoria non viene visualizzata per niente...

  6. #6
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Ho provato a modificarla così:

    SELECT COUNT(*) AS numero, cat.id, cat.nome FROM categorie as cat
    LEFT JOIN prodotti ON cat.id=prodotti.id_categoria
    GROUP BY cat.id

    ma così numero ha valore uno sia nel caso in cui non c'è alcun prodotto associato sia nel caso ce ne sia uno solo... come ne vengo fuori?

  7. #7
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    un aiutino per favore

  8. #8
    Utente di HTML.it L'avatar di james
    Registrato dal
    Jun 2002
    Messaggi
    1,481
    Originariamente inviato da james
    un aiutino per favore
    up

  9. #9
    SELECT nome FROM categorie LEFT OUTER JOIN ( SELECT COUNT(*) AS numero, id FROM prodotti ) ON (categorie.id = id_categoria)

    non ho idea della fattibilità della cosa ma posto, forse può dare un'idea a qualcun d'altro

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    SELECT COUNT(prodotti.id) AS numero, cat.id, cat.nome FROM categorie as cat
    LEFT JOIN prodotti ON cat.id=prodotti.id_categoria
    GROUP BY cat.id
    think simple think ringo

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 © 2025 vBulletin Solutions, Inc. All rights reserved.