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

Discussione: [MYSQL]Somma se

  1. #1

    [MYSQL]Somma se

    Ciao,
    sono un pò arrugginito con MySql e on ricordo se sono in grado di fare una select e creare campi personali il cui valore incrementa di 1 solo nel caso un IF è vero.

    Esempioa una tabella estraggo una 2 colonne, la prima sono le id, la seconda mi dice un valore mode, che può essere 1 o 2

    Vorrei estrarre tutti i dati della tabella di una specifica id e sapere quanti sono le mode=1 o mode=2

    ho provato con:


    SELECT
    LOG.id,
    LOG.MODE,
    IF(LOG.MODE=1,1,0) as CMode,
    SUM(CMode+1) as SumCMode
    FROM
    LOG
    WHERE
    LOG.id = '991000029'
    chiaramente non funge!! chi mi aiuta a ricrodare?
    Luca Bottoni's World
    www.bottonisworld.com

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    usa un count.

    io farei una cosa del genere poi magari qlkuno ti dara' un sol migliore

    select log.* , count(log.mode) from log where log.id = id

  3. #3
    però così farei un count di tutti i Mode,quello che volevo era il count dei mode=1 e Mode=2 con un'unica select se era possibile.

    Ricordo che con IF() forse era possibile, ma non ricordo bene come si struttura questo tipo di if in SQL
    Luca Bottoni's World
    www.bottonisworld.com

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    fai una distinct o un group by

    select count(mode) from tabella group by mode;

    credo che possa andare in teoria ovviamente non ho testato perche' non ho un mysql sottomano ora. cmq prova .

  5. #5
    forse ricordavo male, ma posso cmq fare le somme, ma non posso avere le righe.

    se uso con il Group By questo:

    SUM(IF(LOG.MODE=1,1,0)) as TotMode
    Group By MODE


    allora la select funziona, ma non ho i dati che mi serirebbero..ovvero le righe che portano al risultato
    Luca Bottoni's World
    www.bottonisworld.com

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    mmm allora forse avevo capito male a te serve avere come risultato :

    campo1 | campo2 | conteggio mode=1 | conteggio mode=2
    campo1 | campo2 | conteggio mode=1 | conteggio mode=2
    campo1 | campo2 | conteggio mode=1 | conteggio mode=2

    una cosa del genere?

  7. #7
    si, dovrei estrarre tutte le righe e al volo sapere il valore di quelle che sono in mode=1 e mode=2,tipo un select * from con 2 campi in più che indicano il numero delle righe mode=1 e mode=2
    Luca Bottoni's World
    www.bottonisworld.com

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    in teoria si puo' fare ....

    sinceramente ora non mi viene in mente una soluzione cmq siccome i conteggi sono tutti uguali non puopi fare 2 query?

    La prima conta le occorrenza e la seconda ti da le righe e poi fondi i risultati

    tipo

    select * from tabella UNION select count(mode) where mode=1 UNION select count(mode)where mode=2

    una cosa del genere?

    O senno mi viene in mente una soluzione con una create view ... purtroppo non avendo sql sottomano non mi vengono in mente altre soluzioni cosi' al volo

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da lbottoni
    forse ricordavo male, ma posso cmq fare le somme, ma non posso avere le righe.

    se uso con il Group By questo:

    SUM(IF(LOG.MODE=1,1,0)) as TotMode
    Group By MODE


    allora la select funziona, ma non ho i dati che mi serirebbero..ovvero le righe che portano al risultato
    Puoi postare qualche record di esempio e uno schemino di ciò che vorresti ottenere?

  10. #10
    lbottoni la tua richiesta non si capisce un granché!

    Vorrei estrarre tutti i dati della tabella di una specifica id e sapere quanti sono le mode=1 o mode=2
    vuol dire che l'id non ti identifica un singolo elemento nella tabella, e quindi vuoi gli 1 e i 2 totali per quel dato gruppo di elementi che ha come id il valore richiesto? Oppure id identifica come valore unico la riga e a te interessa il risultato totale?

    Comunque, quello che ti suggerisco io e di non usare una sola query perché, almeno dalle informazioni che hai dato, si dovrebberò usare delle subquery perché con quella query non puoi estrarre il conteggio totale degli elementi di 1 e di 2 associandoli ad ogni riga che estrai ... oltre ad essere un'operazione inutile consumi un sacco di memoria per riproporre per ogni riga quelle due colonne.
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.