Newsgroup: it.comp.software.database
Titolo: [?] Query con problemi

Con questa Select:
SELECT
PDC.CODICE_VOCE,
PDC.SALDO
FROM
PDC
WHERE
PDC.SALDO
<>
(SELECT SUM(SCA.DA_PAGARE)
FROM SCA
WHERE
SCA.CODICE_VOCE=PDC.CODICE_VOCE
)
Accade (sia in Access che in SQL Server) che se nella tabella SCA (vedi
condizione Where) non esistono records, nemmeno la SUM pare essere
restituita (nemmeno a 0) e quindi, non potendo essere confrontata (immagino
io) con PDC.SALDO non soddisfa la condizione Where e non ottengo quindi
nemmeno la riga coi dati provenienti dalla tabella PDC. Pensate ci sia un
modo per "forzare" un risultato zero nella subquery della clausola Where se
la stessa non trova records? Grazie.
Esempio:
Tabella PDC (CODICE_VOCE, SALDO)
Cliente1, 10
Cliente2, 20
Tabella SCA (CODICE_VOCE, DA_PAGARE)
Cliente1, 5
Ottengo il Cliente1, ma non il Cliente2 che pure ha un PDC.SALDO <> dalla
SUM ... di niente.

 Con questa Select:
[SNIP]
Ciao Lupo,
prova cosi':
SELECT PDC.CODICE_VOCE, PDC.SALDO
FROM   PDC
WHERE  PDC.SALDO <>
       ISNULL(
           (SELECT SUM(SCA.DA_PAGARE)
            FROM   SCA
            WHERE  SCA.CODICE_VOCE=PDC.CODICE_VOCE
            ), 0
        )
--
Gianluca Hotz
Backoffice MVP (SQL Server) MCP SQL Server and MCP Windows
Vice-President of the Italian User Group for SQL Server
Founding Member of the Italian User Group for .NET
http://www.ghotz.com
http://www.ugiss.org

 Accade (sia in Access che in SQL Server) che se nella tabella SCA (vedi
[...]
dovrebbe accadere in tutti i dbms!!!!
sel il dataset della subquery è vuoto sum() non può restituire come valore
uno
scalare... ergo ci metti un bel controllo che tutti i dialetti SQL
implementano
Is Null(subquery,<valore che ti ritorna nel caso il dataset fosse vuoto>)
/G

 Is Null(subquery,<valore che ti ritorna nel caso il dataset fosse vuoto>)
Ringrazio anche te, ovviamente, ma ho dovuto fare qualche salto mortale per
adeguare (ne ho fatta un'altra) per DAO+Access che ha una sintassi diversa
per ISNULL.

per ISNULL.
il consiglio, per vari motivi, potrebbe essere di passare ad ADO.
saluti.
-- 
      Gianni "bugbarbeq" Rondinini, 27+15, RA, 193, 152
   VBR - Vero Birro Romagnolo®, diffidate dalle imitazioni!
 BMW 530D "BatMobile EVO" Driver - Escortone da 500 CV dreamer
Kawasaki "Gas Gas" ZZ-R 1100 - HD Electra Ultra Classic Dreamer
   On contrary of popular belief, Unix *IS* user friendly:
    it just appears to be selective who it is friend with

 il consiglio, per vari motivi, potrebbe essere di passare ad ADO.
Gianni, ne abbiamo già parlato altrove: Io devo (!) mantenere un'unica
versione di programmi che, tramite alcune opzioni, devono andare sia in
ambiente DAO+Access (a tale combinazione non rinuncio!) che in ambiente
ADO+SQL Server

ambiente DAO+Access (a tale combinazione non rinuncio!) che in ambiente
fai come preferisci :)
il mondo e' pieno di gente che paga donne perche' li prendano a calci
nelle pa**e, dunque non rinunciare ad ado+access e' un male da niente
:)
saluti ironici


 saluti ironici
Caro Gianni, uno ti concede (e te lo spiega pure) l'altra guancia e tu che
fai?
Lo schiaffeggi immediatamente. Te lo ripeto, per l'ultima volta: Non hai
capito niente.
Di gente che (ancora) usa (e sicuramente userà) DAO+Access, ce n'è ancora un
tot. Ci ha campato, ci campa e ci camperà. Non credo di essere molto lontano
dal vero se, addirittura, ipotizzo che siano più di quanti usino ADO+altro.
Quindi, se vuoi, ti chiedo, per me e per loro, solo rispetto.

fai?
uff... ma guarda che se fanno una gara di presa degli spilli per la
punta tu vinci alla stragrande.
eccheccacchio: piu' che metterla sul ridere e usare gli smileys, che
devo fare?
saluti.
