Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Group by su due campi

  1. #1

    Group by su due campi

    Buonasera

    ho questa tabella

    catx1=luca
    catx2=paolo

    catx1=luca
    catx2=andrea

    catx1=paolo
    catx2=simone

    vorrei che l'output fosse

    luca=2
    paolo=2
    andrea=1
    simone=1

    io sono arrivato fino a questa query
    codice:
    sql="select catx1,count(id) as products_number from products where cid=" & cid & " AND active='Yes' GROUP BY catx1"
    che però mi restituisce
    luca=2
    paolo=1

    cioè considera soltanto catx1 e fa il group in base a catx1

    io vorrei che nel raggruppare tenesse conto sia di catx1 che di catx2, come se fossero lo stesso campo, raggruppasse i contenuti e mi dicesse in totale quanti ce ne sono.

    ho provato aggiungento catx2 sia alla select che al group by ma è venuta fuori una schifezza

    non credo nemmeno che sia un problema di group by.. non so proprio dove mettere le mani potete aiutarmi ?

  2. #2
    devi prima assimilare le due catX, così

    SELECT cat1x as catx FROM ....
    UNION
    SELECT cat2x as catx FROM ....

    poi fai la group by, così

    SELECT catx FROM
    (
    SELECT cat1x as catx FROM ....
    UNION
    SELECT cat2x as catx FROM ....
    )
    GROUP BY catx ...

    sistema il tutto

  3. #3
    cioè faccio

    SELECT catx FROM ( SELECT cat1x as catx FROM .... UNION SELECT cat2x as catx FROM .... ) GROUP BY catx ...

    ?


    sql="select catx, catx1, catx2, count(id) as id_counter from"
    sql= sql & " (select catx1 as catx from products where cid=" & cid & " AND active='Yes'"
    sql= sql & " UNION"
    sql= sql & " select catx2 as catx from products where cid=" & cid & " AND active='Yes')"
    sql= sql & " group by catx"

    ?

    praticamente devo fare in modo che catx1 e catx2 vengano buttati in catx e poi agire su quel catx ? però scritta così da errore.

  4. #4
    certo che ti da' errore, cat1x e cat2x non sono in uscita

  5. #5
    ok, grazie

    ma il count(id) per far scrivere accanto a catx quante volte compare quel valore in quale query lo metto ?

    nella prima select, contando catx, mi restituisce sempre 1

  6. #6
    fa' vedere la query che funziona

  7. #7
    sql="select catx, count(catx) as conta_p from "
    sql= sql & "(select catx1 as catx from products where cid=" & cid & " AND active='Yes'"
    sql= sql & " UNION"
    sql= sql & " select catx2 as catx from products where cid=" & cid & " AND active='Yes')"
    sql= sql & " group by catx"

    mi scrive catx giusto, raggruppato ma il contatore è sempre 1

    tornando all'esempio iniziale

    vorrei che scrivesse
    luca=2
    paolo=2
    andrea=1
    simone=1

    e invece scrive

    luca=1
    paolo=1
    andrea=1
    simone=1

  8. #8

  9. #9
    i numeri sono cambiati, dovremmo esserci

    adesso faccio un controllo manuale per vedere se tornano le somme, nel frattempo grazie !!

  10. #10
    mandami una cartolina! guarda in firma...

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.