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

    contare record database

    salve vorrei dei consigli su come impostare una query

    dovrei contare i record di 3 campi, per ogni campo devo fare un conteggio per 4 possibili tipi di valori

    la tabella è cosi composta:

    Horror | Giallo | Thriller

    A A A
    B B B
    C C C
    D D D


    devo contare tutti i record con valore A, valore B, valore C, valore D del campo Horror,Giallo, Thriller

    spero di essere stato chiaro

    grazie!

  2. #2
    Ciao,
    dopo aver creato le due tabelle indicate nell'immagine

    http://www.holidaysoft.it/images/conta.gif

    la query è
    codice:
    SELECT AA.VALORI, ContaHorror, ContaGIALLO, ContaThriller
    FROM (SELECT A.VALORI, COUNT(B.HORROR) as ContaHorror
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.HORROR
    GROUP BY A.VALORI)  AS AA, 
    (SELECT A.VALORI, COUNT(B.GIALLO) as ContaGIALLO
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.GIALLO
    GROUP BY A.VALORI)  AS BB, 
    (SELECT A.VALORI, COUNT(B.Thriller) as ContaThriller
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.Thriller
    GROUP BY A.VALORI)  AS CC
    WHERE AA.VALORI=BB.VALORI
    AND AA.VALORI=CC.VALORI;
    Ciao
    Mik

  3. #3
    ciao,

    grazie 1000 per l'interesse

    è una query abbastanza articolata, e avrei delle difficoltà nel comprenderla, mi potresti spiegare la logica a grandi linee?

    ps il db è mysql

    grazie!

  4. #4
    Si è vero, è un pò articolata come è articolato il risultato che vogliamo ottenere... ma tutto si può fare:

    SELECT AA.VALORI, ContaHorror, ContaGIALLO, ContaThriller
    FROM
    (SELECT A.VALORI, COUNT(B.HORROR) as ContaHorror
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.HORROR
    GROUP BY A.VALORI) AS AA,

    (SELECT A.VALORI, COUNT(B.GIALLO) as ContaGIALLO
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.GIALLO
    GROUP BY A.VALORI) AS BB,

    (SELECT A.VALORI, COUNT(B.Thriller) as ContaThriller
    FROM TB_VALORI A LEFT JOIN TB_CONTA B ON A.VALORI=B.Thriller
    GROUP BY A.VALORI) AS CC

    WHERE AA.VALORI=BB.VALORI
    AND AA.VALORI=CC.VALORI;

    conta le righe di Horror raggruppando i valori (a, b, c)
    conta le righe di Giallo raggruppando i valori (a, b, c)
    conta le righe di Thriller raggruppando i valori (a, b, c)

    i valori estratti dalle tre select vengono unite tramite la join
    WHERE AA.VALORI=BB.VALORI
    AND AA.VALORI=CC.VALORI;


    Spero di essere stato più chiaro?

    Ciao
    Mik

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.