Access 2007 creare una query che operi su 2 tabelle non collegate....

martedì 15 luglio 2008 - 12.38

fabionik2004 Profilo | Newbie

Salve a tutti ho un problema che non so come risolvere perchè non conosco tutti i comandi di access. Vi spiego con un esempio: Ho una tabella VENDITE dove
ci sono i campi codcliente, totfattura e incasso. Poi ho un'altra tabella INCASSI dove ci sono i campi codcliente e incasso. Premetto che le due tabelle non
hanno alcun tipo di legame, come faccio a creare una query che mia dia come risultato: SOMMA totfattura meno la SOMMA VENDITE.incasso meno
la SOMMA INCASSI.incasso? Naturalmente inserendo un codice cliente che sia uguale per tutte e due le tabelle. Aspetto una vostra risposta grazie

lbenaglia Profilo | Guru

>Salve a tutti ho un problema che non so come risolvere perchè
>non conosco tutti i comandi di access. Vi spiego con un esempio:
>Ho una tabella VENDITE dove ci sono i campi codcliente, totfattura e incasso.
>Poi ho un'altra tabella INCASSI dove ci sono i campi codcliente e incasso.
>Premetto che le due tabelle non hanno alcun tipo di legame,
>come faccio a creare una query che mia dia come risultato:
>SOMMA totfattura meno la SOMMA VENDITE.incasso
>meno la SOMMA INCASSI.incasso?

Ciao Fabio,

Se ho interpretato bene la domanda, una soluzione potrebbe essere:

SELECT SUM(V.totfattura) - SUM(V.incasso) - SUM(I.incasso) FROM Vendite AS V INNER JOIN Incassi AS I ON V.codcliente = I.codcliente;

>Naturalmente inserendo un codice cliente
>che sia uguale per tutte e due le tabelle.
Se vuoi eseguire il calcolo su un singolo cliente, aggiungi la clausola WHERE:

... WHERE V.codcliente = x;

>Aspetto una vostra
>risposta grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

Cavalloeffetre Profilo | Newbie

SELECT sum(totfattura)-sum(incasso)-
(
select sum(incasso) from incassi where idcliente=[immettere codice cliente]
)
FROM vendite
WHERE idcliente=[immettere codice cliente];

questa query opera sulle due tabelle...

ciao

fabionik2004 Profilo | Newbie

Grazie proverò subito a creare la query. Un'altra cosa volevo chiedere, come mai in alcune query nelle quali bisogna inserire il codcliente mi compare la finestra di inserimento per 3-4 volte?

lbenaglia Profilo | Guru

>Grazie proverò subito a creare la query. Un'altra cosa volevo
>chiedere, come mai in alcune query nelle quali bisogna inserire
>il codcliente mi compare la finestra di inserimento per 3-4 volte?
Perché per qualche motivo avrai ripetuto il parametro per 3 o 4 volte, oppure hai sbagliato a scrivere il nome di una colonna ed Access interpreterà la stringa come il nome di un parametro.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fabionik2004 Profilo | Newbie

Salve Ho creato una query come mi è stato detto da voi ed è andato tutto bene. Poi ho cercato di creare un'altra query che vi ricopio qui ma mi da un problema: SELECT RagSociale, Clienti.CodCliente, Count(*) AS NumFatture, Sum(FattureVendite.['Imponibile']) AS Imponibile, Sum(FattureVendite.['Sconto']) AS Sconto, Sum(FattureVendite.TotFattura) AS TotFatture, Sum(FattureVendite.Incasso) AS IncassoInFattura,Sum([FattureVendite].[Omaggio]) AS Omaggi, (SELECT SUM(Incasso) FROM Incassi WHERE Clienti.CodCliente=Incassi.CodCliente) AS IncassoFuoriFattura, (Sum (FattureVendite.TotFattura)) - (Sum (FattureVendite.Incasso))-(SELECT SUM(Incasso) FROM Incassi WHERE Clienti.CodCliente=Incassi.CodCliente) AS Sospesi
FROM FattureVendite, Clienti
WHERE Clienti.CodCliente=FattureVendite.CodCliente
GROUP BY RagSociale, Clienti.CodCliente;
Questa query mi dovrebbe dare il riepilogo di tutti i clienti ma il problema sta nella riga dove dovrebbero comparire i sospesi, perchè per molti clienti mi da il risultato corretto ad altri nella riga sospesi non scrive niente. Come mai? E poi volevo sapere se è possibile filtrare il risultato in modo che solo chi ha dei sospesi > 0 compaia nell'elenco. Grazie

lbenaglia Profilo | Guru

>Questa query mi dovrebbe dare il riepilogo di tutti i clienti
>ma il problema sta nella riga dove dovrebbero comparire i sospesi,
>perchè per molti clienti mi da il risultato corretto ad altri
>nella riga sospesi non scrive niente. Come mai?
Perché probabilmente qualche SUM è NULL, quindi l'intero risultato è NULL.

> E poi volevo
>sapere se è possibile filtrare il risultato in modo che solo
>chi ha dei sospesi > 0 compaia nell'elenco.
Devi ricorrere alla clausola HAVING.

Non avendo le tabelle non ho provuto verificare la query, ma dovrebbe essere qualcosa del genere:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

fabionik2004 Profilo | Newbie

Ho provato a seguire le tue indicazioni ma mi da il seguente errore: Numero errato di argomenti usaticon la funzione nell'espressione della query '(ISNULL(Sum(FattureVendite.....

fabionik2004 Profilo | Newbie

L'errore stava nella Funzione ISNULL perchè utilizzando NZ funziona. Ora però vi ricopio una query creata da me che mi da valori sballati nel campo Sospesi:
SELECT Clienti.CodCliente, RagSociale, (SUM(FattureVendite.TotFattura)- NZ(SUM(FattureVendite.Incasso),0)- NZ(SUM(Incassi.Incasso),0)) AS Sospesi
FROM Clienti, FattureVendite, Incassi
WHERE Clienti.CodCliente=FattureVendite.CodCliente AND Clienti.CodCliente=Incassi.CodCliente
GROUP BY Clienti.CodCliente, RagSociale;
Nel campo Sospesi dovrebbero venir fuori i sospesi di tutti i miei clienti naturalmente raggruppati per cliente. Io ho provato ad inserire le espressioni una per una e fino a quando non ho inserito - NZ(SUM(Incassi.Incasso),0) la query funzionava correttamente. Il problema sta nel gestire la tabella Incasso perchè non ha legami con le altre tabelle. Come posso fare???
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5