Query con risultati "0" (zero).

di il
7 risposte

Query con risultati "0" (zero).

Buonasera,
ho un dubbio per una query che non riesco ad impostare come voglio.

Nel dettaglio, io imposto una query sulla base di due tabelle collegate tra di loro (relazione 1:molti) in quanto ho bisogno di sapere un elenco di persone quanto prodotto hanno consegnato.
Il problema è che io ho bisogno di sapere anche chi ha consegnato "0" (zero) di prodotto.
Le ho provate tutte, ma come risultato ho solo i dati delle persone che hanno consegnato il loro prodotto (e questo va benissimo).

Questo è il codice che ho realizzato (usando il generatore di query, non digitando in Sql)

SELECT Contrattazione.IDCONT, Contrattazione.ID_C2, Contrattazione.IDENTIF, Contrattazione.NOM_REF, Contrattazione.QUOTCONT, Contrattazione.SUPCONT, Sum(BollettiniPeriziaTabacco.KG_NETTI) AS SommaDiKG_NETTI, Sum(BollettiniPeriziaTabacco.NETTO_PAGAM) AS SommaDiNETTO_PAGAM, Sum(BollettiniPeriziaTabacco.PREZ_TOTALE) AS SommaDiPREZ_TOTALE, Avg(BollettiniPeriziaTabacco.PREZ_MEDIO) AS MediaDiPREZ_MEDIO, [KG_NETTI]/[SUPCONT]*100 AS RESAhaNETTO, [NETTO_PAGAM]/[SUPCONT]*100 AS RESAhaPAGAM
FROM Contrattazione RIGHT JOIN BollettiniPeriziaTabacco ON Contrattazione.[IDCONT] = BollettiniPeriziaTabacco.[IDCONT]
GROUP BY Contrattazione.IDCONT, Contrattazione.ID_C2, Contrattazione.IDENTIF, Contrattazione.NOM_REF, Contrattazione.QUOTCONT, Contrattazione.SUPCONT, [KG_NETTI]/[SUPCONT]*100, [NETTO_PAGAM]/[SUPCONT]*100
HAVING (((Contrattazione.ID_C2)="2017201100010"))
ORDER BY Contrattazione.NOM_REF;
Per essere precisi, a me interessa che il report che vado a realizzare, debba riportare tutti i record che hanno [IDCONT], [ID_C2], [IDENTIF],[NOM_REF], [QUOTCONT] e [SUPCONT] e, a fianco, gli altri campi anche se contengono zero, non importa, ma li devo vedere.
Ho provato anche ad inserire, tra i criteri filto del campo [KG_NETTI] la funzione Nz([KG_NETTI];[0]), ma mi da errore.

Qualche suggerimento su dove sbaglio o dove (e come) integrare query?

P.s.: il numero "2017201100010" che riporto in codice è solo un esempio per vedere il corretto funzionamento della query; è chiaro che poi quel numero verrà sostituito da un filtro apposito, ma l'ho lasciato per rendere l'idea che mi servono tutti gli [ID_C2] che hanno il valore "2017201100010"

7 Risposte

  • Re: Query con risultati "0" (zero).

    In visualizzazione struttura query, fai clic con il mouse destro sulla linea di join per vedere le proprietà del join. Devi cambiare da "tipo 1" a "tipo 2".
  • Re: Query con risultati "0" (zero).

    Ok, esce tutto; già andrebbe bene così, però mi farebbe comodo che i campi relativi alla tabella BollettiniPeriziaTabacco, quando non valorizzati, riportassero un valore "0"; è possibile o devono rimanere "in bianco"? (quindi con valore Null)
  • Re: Query con risultati "0" (zero).

    Chiamerò CampoX quello in cui ogni tanto vedi qualche Null. Prova (io non l'ho mai fatto) in visualizzazione struttura query ad aggiungere una colonna con una espressione IIf tale che, se CampoX è Null, deve mostrare 0, altrimenti il valore di CampoX.
  • Re: Query con risultati "0" (zero).

    Provo e vedo; intanto ti ringrazio per la dritta della linea di join
  • Re: Query con risultati "0" (zero).

    carlo pots ha scritto:


    
    SELECT Contrattazione.IDCONT, Contrattazione.ID_C2, Contrattazione.IDENTIF, Contrattazione.NOM_REF, Contrattazione.QUOTCONT, Contrattazione.SUPCONT, Sum(BollettiniPeriziaTabacco.KG_NETTI) AS SommaDiKG_NETTI, Sum(BollettiniPeriziaTabacco.NETTO_PAGAM) AS SommaDiNETTO_PAGAM, Sum(BollettiniPeriziaTabacco.PREZ_TOTALE) AS SommaDiPREZ_TOTALE, Avg(BollettiniPeriziaTabacco.PREZ_MEDIO) AS MediaDiPREZ_MEDIO, [KG_NETTI]/[SUPCONT]*100 AS RESAhaNETTO, [NETTO_PAGAM]/[SUPCONT]*100 AS RESAhaPAGAM
    FROM Contrattazione RIGHT JOIN BollettiniPeriziaTabacco ON Contrattazione.[IDCONT] = BollettiniPeriziaTabacco.[IDCONT]
    GROUP BY Contrattazione.IDCONT, Contrattazione.ID_C2, Contrattazione.IDENTIF, Contrattazione.NOM_REF, Contrattazione.QUOTCONT, Contrattazione.SUPCONT, [KG_NETTI]/[SUPCONT]*100, [NETTO_PAGAM]/[SUPCONT]*100
    HAVING (((Contrattazione.ID_C2)="2017201100010"))
    ORDER BY Contrattazione.NOM_REF;
    
    Io utilizzerei il predicato SQL 'WHERE' al posto del 'HAVING' ...ma questo non ti risolve il problema.

    Per il null :
    
    ... Sum(Nz(BollettiniPeriziaTabacco.KG_NETTI,0)) AS SommaDiKG_NETTI
    
  • Re: Query con risultati "0" (zero).

    max.riservo ha scritto:


    Io utilizzerei il predicato SQL 'WHERE' al posto del 'HAVING' ...ma questo non ti risolve il problema.
    Vabbè, ormai l'ho impostato così e mi va bene lo stesso

    max.riservo ha scritto:


    Per il null :
    
    ... Sum(Nz(BollettiniPeriziaTabacco.KG_NETTI,0)) AS SommaDiKG_NETTI
    
    Grazie della dritta; era proprio quello che volevo.

    Per me possiamo anche chiudere
  • Re: Query con risultati "0" (zero).

    carlo pots ha scritto:



    Grazie della dritta; era proprio quello che volevo.
    Bene che hai risolto ...

    carlo pots ha scritto:


    max.riservo ha scritto:


    Io utilizzerei il predicato SQL 'WHERE' al posto del 'HAVING' ...ma questo non ti risolve il problema.
    Vabbè, ormai l'ho impostato così e mi va bene lo stesso
    Forse non conosci la differenza tra il Where e l' Having e probabilmente hai pochi records nella tua tabella ...
    Comunque io ti ri-consiglio di trasformare l' having in where ... poi vedi tu
Devi accedere o registrarti per scrivere nel forum
7 risposte