Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    somma e raggruppamento (query)

    Mi ritrovo oggi in un bel pasticcio...

    sto cercando di ottimizzare 1 query complessa che prevededi filtrare dati da 4 tabelle e che tramite una somma e una epressione calcola il valore attuale di un dato base.

    il problema è che il raggruppamento di valori non presenti in una tabella assegna un valore null anzichè assegnare un valore "0".

    Se in mia_tab.magazzino non è presente un valore collegato a mia_tab1.id al campo [Sum(mia_tab2.tot) AS SommaDitot] viene assegnato un valore "null".
    Rendendo impossibile la risoluzione dell'espressione:
    [magazzino-SommaDitot] che a sua volta avrà un valore "null".

    Io vorrei invece che il valore di [Sum(mia_tab2.tot) AS SommaDitot]se non riscontra nessun record non sia null, ma acquisca un valore 0 in modo da essere calcolato ed ottenere un valore numerico.

    ecco la query:

    SELECT mia_tab1.id, mia_tab1.magazzino, Sum(mia_tab2.tot) AS SommaDitot, magazzino-SommaDitot AS Disponibili
    FROM mia_tab2 RIGHT JOIN ((mia_tab1 INNER JOIN mia_tab3 ON mia_tab1.codice = mia_tab3.codice) INNER JOIN mia_tab4 ON (mia_tab1.id_2 = mia_tab4.id_2) AND (mia_tab3.codice = mia_tab4.codice)) ON mia_tab2.id = mia_tab.id
    GROUP BY mia_tab.id, mia_tab.magazzino;

  2. #2

  3. #3
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    yes

  4. #4
    potresti provare con IIF (due I!) non ricordo bene la sintassi ma dovrebbe essere

    IIF(IsNull(Sum(mia_tab2.tot)),0,Sum(mia_tab2.tot))

    o qualcosa del genere. guarda l'help di access

  5. #5
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma funzionerebbe con mysql?

  6. #6
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    grande optime...

    eri vicino...
    tot: Nz([magazzino]-[SommaDitot];"0")

    ma mi chiedo se esiste qualcosa di simile per mysql

  7. #7
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    il problema è :


    in access va... ma in asp?????

    [Microsoft][Driver ODBC Microsoft Access] Funzione 'Nz' non definita nell'espressione

    Ho provato con

    Nz((magazzino-SommaDitot),0)

    Nz((magazzino-SommaDitot);0)

    Nz((magazzino-SommaDitot),"0")

    Nz((magazzino-SommaDitot);'0')

    Nz((magazzino-SommaDitot);"0")

    nada....

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427

    Quasi risolto

    in questo caso asp non accetta la funzione nz...
    per quanto su access funziona regolarmente, quindi ho usato la funzione IIF.

    L'unica cosa che rimane è:

    SELECT mia_tab1.id, mia_tab1.magazzino, Sum(mia_tab2.tot) AS SommaDitot, magazzino-SommaDitot AS Disponibili
    FROM mia_tab2 RIGHT JOIN ((mia_tab1 INNER JOIN mia_tab3 ON mia_tab1.codice = mia_tab3.codice) INNER JOIN mia_tab4 ON (mia_tab1.id_2 = mia_tab4.id_2) AND (mia_tab3.codice = mia_tab4.codice)) ON mia_tab2.id = mia_tab.id
    GROUP BY mia_tab.id, mia_tab.magazzino

    ' se aggiungo uno clausola HAVING filtrando i valori [magazzino-'SommaDitot] > 0
    'access mi richiede il parametro con un alert e devo obbligatoriamente cliccare su ok e proseguire
    non ottenendo nessun risultato quando in realtà i risultati sono diversi...

    'di seguito la clausola HAVING che completa la query.

    HAVING (((IIf(IsNull([magazzino]-[SommaDitot]),0,([magazzino]-[SommaDitot])))>0));

  9. #9
    NZ è un funzione *interna* di access, che ADO non vede.

  10. #10
    Utente di HTML.it L'avatar di kafkahc
    Registrato dal
    Mar 2002
    Messaggi
    113

    quindi nessuna possibilità senza rifare da capo tutto?

    ciao optime,
    riprendo questo vecchio post per chiederti,
    visto che ADO non vede NZ (funzione interna di access) non c'é nessun modo per implementarlo in un sistema con asp?

    Purtroppo mi sono trovato nelle mani un db con un bel pò di formule che utilizzano NZ e sarebbe un lavoraccio rifarle tutte...

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.