>In pratica mi ha raddoppiato il valore importo_ordine là dove
>esistono piu fatture per quell'ordine.
Ciao zseven,
eh, per forza, se esistono fatture multiple per lo stesso ordine, le righe dell'ordine saranno moltiplicate nel momento in cui metterai in JOIN le due tabelle per OrdineID.
Ti ho preparato un piccolo esempio per SQL Server (tanto per avere 4 dati su cui ragionare ) che ti propone 3 soluzioni.
Se non ricordo male, la prima non funziona con Access, ma con le altre due non dovresti avere problemi di sorta:
USE tempdb;
CREATE TABLE dbo.Ordini(
OrdineID int NOT NULL IDENTITY PRIMARY KEY,
ProgettoID int NOT NULL,
Importo smallmoney NOT NULL
);
CREATE TABLE dbo.Fatture(
FatturaID int NOT NULL IDENTITY PRIMARY KEY,
OrdineID int NOT NULL,
CONSTRAINT FK_Fatture_Ordini FOREIGN KEY(OrdineID)
REFERENCES dbo.Ordini(OrdineID)
);
INSERT dbo.Ordini VALUES(7, 300.00);
INSERT dbo.Ordini VALUES(7, 100.00);
INSERT dbo.Fatture VALUES(1);
INSERT dbo.Fatture VALUES(1);
INSERT dbo.Fatture VALUES(2);
/* Tua query */
SELECT SUM(O.Importo) AS SumOfimporto_ordine
FROM dbo.Ordini AS O
INNER JOIN dbo.Fatture AS F
ON O.OrdineID = F.OrdineID
WHERE O.ProgettoID = 7;
/* Output:
SumOfimporto_ordine
---------------------
700,00
(1 row(s) affected)
*/
/* Soluzione 1 */
SELECT SUM(DISTINCT O.Importo) AS SumOfimporto_ordine
FROM dbo.Ordini AS O
INNER JOIN dbo.Fatture AS F
ON O.OrdineID = F.OrdineID
WHERE O.ProgettoID = 7;
/* Soluzione 2 */
SELECT SUM(O.Importo) AS SumOfimporto_ordine
FROM dbo.Ordini AS O
INNER JOIN (
SELECT OrdineID
FROM dbo.Fatture
GROUP BY OrdineID
) AS F
ON O.OrdineID = F.OrdineID
WHERE O.ProgettoID = 7;
/* Soluzione 3 */
SELECT SUM(O.Importo) AS SumOfimporto_ordine
FROM dbo.Ordini AS O
INNER JOIN (
SELECT DISTINCT OrdineID
FROM dbo.Fatture
) AS F
ON O.OrdineID = F.OrdineID
WHERE O.ProgettoID = 7;
/* Output:
SumOfimporto_ordine
---------------------
400,00
(1 row(s) affected)
*/
DROP TABLE dbo.Fatture, dbo.Ordini;
>Grazie :ciauz:
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org