Visualizzazione risultati 1 fino 5 di 5

Discussione: SUM( ISNULL( x, 0 ) )

  1. #1
    Guest

    Predefinito SUM( ISNULL( x, 0 ) )

    Ho un problema in questa query:

    Codice:
    SELECT player.id, palyer.name, player.money, SUM(ISNULL(stock.value,0)) + SUM(ISNULL(obj.value,0)) as "prova"
    FROM  `player`
    left join trade on trade.owner= player.id
    left join stock on trade.stock = stock.id
    left join obj on obj.owner = player.id
    group by player.id

    MySQL said:

    #1582 - Incorrect parameter count in the call to native function 'ISNULL'


    dovrebbe sommare il valore delle azioni possedute da un giocatore (passando attraverso la tabella trade che dice chi possiede cosa) e il valore degli oggetti da lui posseduti. Se lascio le due SUM separate (una colonna ciascuna) queste funzionano, ma mi danno campi null se il giocatore non ha oggetti nè azioni. Unendole, dove uno dei campi è NULL nella somma ece, giustamente, NULL. Ho cercato su internet e mi dice di usare ISNULL(valoredacontrollare, 0) per fare uscire lo zeero invece del null e poter così fare la somma. MYSQL però non è d'accordo. Che ne dite? Che faccio?
    Ultima modifica di dreadnaut : 14-01-2011 alle ore 17.59.19

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Credo che non sia la funzione che ti serva, ISNULL() vuole un solo argomento e restituisce 1 se questo è NULL, 0 in caso contrario (vedi qui: http://dev.mysql.com/doc/refman/4.1/...unction_isnull)

    Quella che ti serve molto probabilmente è IFNULL() (vedi: http://dev.mysql.com/doc/refman/4.1/...unction_ifnull). Questa accetta due argomenti, e restituisce il primo se non è NULL, oppure il secondo se il primo è NULL.

    Stammi bene...
    Ultima modifica di dementialsite : 14-01-2011 alle ore 17.44.37
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Ecco, ora va :)
    Grazie mille.

  4. #4
    Guest

    Predefinito

    altro problema sulla stessa query... la somma degli oggetti ora esce moltilicata per il numero di azioni... O.o

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Hai provato ad usare solamente le SUM()? Dovrebbero ignorare i valori NULL nella somma, restituendo NULL solamente quando non ci sono termini da sommare. (vedi: http://dev.mysql.com/doc/refman/4.1/...functions.html)

    Se devi collegare le due somme, potresti tentare questa soluzione: IFNULL(SUM(stock.value), 0) + IFNULL(SUM(obj.value), 0)

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

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