Visualizzazione risultati 1 fino 6 di 6

Discussione: Conteggio MySQL e echo dell'elemento

  1. #1
    Guest

    Predefinito Conteggio MySQL e echo dell'elemento

    Salve a tutti, vi spiego meglio la cosa facendovi un disegnino
    Mettiamo caso che ho 3 tabelle nel DB

    UTENTI
    id_utente | nome | cognome

    ARTICOLI
    id_articolo | nome | prezzo | descrizione

    FATTURE
    id_fattura | id_utente | id_articolo

    Se per esempio volessi stampare il nome dell'articolo e vedere in quante fatture si trova? (E infine risalire all'utente? facoltativo)

    Esempio:

    Articolo nome #500, si trova in 300 fatture.

    Potrei utilizzare un

    Codice:
    SELECT articoli.nome, articoli.id FROM articoli, fatture WHERE articoli.id_articolo = fatture.id_fattura
    
    Infine fare un
    $conteggio = mysql_num_rows(della_query_sopra);
    Funziona ma quando vado ad implementarlo in un While, ottengo pił volte lo stesso
    Articolo nome #500 + il $conteggio che č ESATTO

    Ma vorrei avere solo un Articolo nome #500 + $conteggio

    -----------------------------------------------------------------------------

    Precisamente, in un WHILE, invece di ottenere :
    Codice:
    Articolo nome #500 | 3 fatture
    
    Articolo nome #700 | 2 fatture
    Ottengo:
    Codice:
    Articolo nome #500 | 3 fatture
    Articolo nome #500 | 3 fatture
    Articolo nome #500 | 3 fatture
    
    Articolo nome #700 | 2 fatture
    Articolo nome #700 | 2 fatture
    Vorrei qualcosa come WordPress con le Categorie:
    Codice:
    Anime e Manga | 70 articoli
    Film | 10 articoli

  2. #2
    L'avatar di saitfainder
    saitfainder non č connesso Sėniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    In questi casi si usano le aggregazioni:

    Codice:
    SELECT articoli.id, articoli.nome, COUNT(*) AS fatture FROM articoli, fatture WHERE articoli.id_articolo = fatture.id_fattura GROUP BY articoli.id


    «Č una mia peculiaritą distorcere la veritą e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    prova con

    Codice PHP:
    SELECT articoli.nome, count(*)
    FROM articoli, fatture
    WHERE articoli
    .id_articolo = fatture.id_fattura
    GROUP BY articoli
    .nome;
    EDIT
    Anticipato ma lascio ...
    Ultima modifica di simpleticket : 28-06-2013 alle ore 09.59.56

  4. #4
    Guest

    Predefinito

    Appena possibile provo e vi faccio sapere. Effettivamente non avevo preso in considerazione nč il GROUP BY nč il COUNT.

    Edit:

    Funziona alla perfezione

    Grazie ragazzi!

    Edit2:

    Ultima domanda. Se volessi avere una lista di tutte le fatture e il conteggio? Anche di quelle vuote?

    Codice:
    Articolo nome #500 | 3 fatture
    
    Articolo nome #700 | 2 fatture
    
    Articolo nome #400 | 0 fatture
    Col codice sopra non č possibile, perchč fa l'associazione WHERE e dunque prende i valori > 1
    Ultima modifica di saitfainder : 28-06-2013 alle ore 13.54.50

  5. #5
    L'avatar di saitfainder
    saitfainder non č connesso Sėniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Ti mancano un po' di basi teoriche, eh...

    Codice:
    SELECT articoli.id
    , articoli.nome
    , COUNT(fatture.id_fattura) AS fatture
    FROM articoli
    LEFT JOIN fatture
    ON articoli.id_articolo = fatture.id_fattura
    GROUP BY articoli.id


    «Č una mia peculiaritą distorcere la veritą e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  6. #6
    Guest

    Predefinito

    Ok, ho risolto!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •