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

    query con diversi count

    salve a tutti,
    avrei bisogno di un aiuto o un consiglio su come impostare una query sql per l'estrazione di dati da un database:

    la tabella è composta da due campi: marca (circa una cinquantina di modelli) e taglia (tre soli tipi: XL, L, M).
    per estrarre la quantità totale esistente per ogni marca ho creato la seguente query:

    select marca, count (*) as totale from tabella group by (marca) order by count (*) desc

    e tutto funziona perfettamente.

    quello che non riesco creare, nonostante innumerevoli tentativi e ricerche, è una query che oltre alla quantità totale mi fornisca anche la quantità per ogni taglia.
    i dati esposti in tabella che vorrei riuscire ad ottenere sono ad esempio:

    marca totale taglia XL taglia L taglia M

    lacoste 10 5 3 2
    nike 15 3 6 6
    puma 12 4 3 5


    qualcuno è in grado di darmi qualche dritta? quello che ho capito è che mi servirebbe una query con diversi count, ma non so come impostarla....

    grazie in anticipo

  2. #2

  3. #3
    grazie per il suggerimento, davvero una fonte notevole di ispirazioni...
    ho trovato le informazioni che cercavo.
    ora mi resta solo da perfezionare la query sql adattandola alle mie esigenze.

    grazie ancora optime

  4. #4
    poi, mi raccomando, posta la soluzione, ché interessa tutti

  5. #5
    il problema era quello di riuscire ad aggregare risultati diversi in un’unica riga (record) di risultati.

    ho consultato il blog di cui mi hai fornito il link e, nella sezione SQL, veniva proprio spiegato come operare di fronte a questa esigenza. ho combattuto un po', vista anche la complessità della query stessa e dei miei adattamenti, ma alla fine finalmente ne sono venuto a capo.

    ecco la query completa:

    "SELECT marca, MAX(tgxl) AS tgxl1, MAX(tgl) AS tgl1, MAX(tgm) AS tgm1 FROM
    (SELECT marca, COUNT(*) AS tgxl, 0 AS tgl, 0 AS tgm FROM tabella WHERE taglia LIKE 'XL' GROUP BY marca
    UNION
    SELECT marca, 0 AS tgxl, COUNT(*) AS tgl, 0 AS tgm FROM tabella WHERE taglia LIKE 'L' GROUP BY marca
    UNION
    SELECT marca, 0 AS tgxl, 0 AS tgl, COUNT(*) AS tgm FROM tabella WHERE taglia LIKE 'M' GROUP BY marca)
    AS subQry GROUP BY marca ORDER BY (MAX(tgxl)+MAX(tgl)+MAX(tgm)) DESC, MAX(tgxl) DESC, MAX(tgl) DESC, marca ASC"

    ciao optime e grazie ancora per il tuo prezioso suggerimento

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.