Newsgroup: it.comp.appl.access
Titolo: Unire totali di due query

ciao a tutti
ho questa query:
SELECT
   tblOrdini.IDOrdine,
   tblOrdini.DataOrdine,
   tblOrdini.NumeroOrdine,
   tblDettagliOrdini.IDProdotto,
   tblDettagliOrdini.QtaOrdinata,
   tblOrdini.IDProgetto,
   tblFornitori.IDFornitore
FROM (tblOrdini
INNER JOIN tblFornitori
   ON tblOrdini.IDFornitore = tblFornitori.IDFornitore)
INNER JOIN tblDettagliOrdini
   ON tblOrdini.IDOrdine = tblDettagliOrdini.IDOrdine;
 
a cui vorrei aggiungere la colonna QtaRicevuta di questa query:
 
SELECT
   tblFattureAcquisti.IDFatturaAcquisti,
   tblFattureAcquisti.IDFornitore,
   tblDettagliAcquisti.QtaRicevuta,
   tblFattureAcquisti.IDOrdine,
   tblOrdini.NumeroOrdine,
   tblProdotti.IDProdotto
FROM (tblOrdini
INNER JOIN tblFattureAcquisti
   ON tblOrdini.IDOrdine = tblFattureAcquisti.IDOrdine)
INNER JOIN (tblProdotti
INNER JOIN tblDettagliAcquisti
   ON tblProdotti.IDProdotto = tblDettagliAcquisti.IDProdotto)
   ON tblFattureAcquisti.IDFatturaAcquisti = 
tblDettagliAcquisti.IDFatturaAcquisti;
 
le due query separatamente danno risultati esatti.
 
la prima mi fa vedere tutti gli ordini fatti.
la seconda la quantità ricevuta per singoli ordini.
si vorrebbe vedere tutte righe degli ordini fatti e solo Qtaricevuta,
per singolo record, della seconda query.
es.
IDOrd DataOrdine  NumeroOrdine IDProd QtaOrd IDProgetto IDFor qtaRic
16    30/04/2015  Or001/2015	22	10	46	7	2
16    30/04/2015  Or001/2015	23	23	46	7	0
26    19/05/2015  Or002/2015	25	1	46	16	0
29    19/05/2015  Or003/2015	25	1	47	16	1
30    19/05/2015  Or004/2015	22	3	47	7	0
30    19/05/2015  Or004/2015	23	4	47	7	2
 
Grazie
 
Daniele

...
 
Perché non aggiungi la tabella tblFattureAcquisti alla prima query per 
avere presente il campo QtaRicevuta? Forse con un outer join (= LEFT o 
RIGHT JOIN) - se non ci sono sempre record.
 
Se non è possibile, dov'è il problema di unire i risultati delle due 
query in una terza? Magari sarebbe più semplice attraverso un campo 
univoco per il dettaglio, cioè tblDettagliOrdini.IDDettagliOrdine, ma 
anche se non esiste, con IDOrdine, IDProdotto, forse IDFornitore, ci 
sono abbastanza ID per unire i record delle query, o no?
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 


Si. ci vorrebbe un campo univoco. ma non so come fare...:-(
 
il problema sta nel fatto che per ogni NumeroOrdine della tblOrdini,
posso avere nella tblFattureAcquisti diversi record.
 
Ogni ordine può essere evaso con diverse fatture. quindi nella 
tblFattureAcquisti ho qualcosa di simile:
IDFattcquisti IDOrdine NumeroOrdine   QtaRic    IDFor  IDProdotto
1		42	Or001/2015	1	 7	  22
3		42	Or001/2015	5	 7	  22
8		43	Or002/2015	3	 12	  24
9		45	Or003/2015	5	 7	  22
9		45	Or003/2015	7	 7	  23
ho fatto esempio con due NumeroOrdine uguali ma possono essere di più.
 
quindi il record univoco sarebbe l'insieme di tutti gli ID.
 
ciao Karl
grazie per la risposta
 
Daniele
 
 


ciao Karl
ho provato in questo modo ma non mi da risultati esatti.
come puoi vedere le prime due query hanno lo stesso numero di record.
la sola differenza è i primi 3 record hanno un solo Prodotto di 
dettaglio mentre il 4 ne ha 2
IDOrdIDFornit IDProd  	QtaOrdinata	NumeroOrdine
41	7	22	34		Or001/2015
42	15	27	20		Or002/2015
43	12	24	10		Or003/2015
44	7	22	22		Or004/2015
44	7	23	14		Or004/2015
 
IDOrdIDFornit IDProd 	QtaRicevuta  	NumeroFattura
41	7	22	34		Or001/2015
42	15	27	18		Or002/2015
43	12	24	10		Or003/2015
44	7	22	12		Or004/2015
44	7	23	5		Or004/2015
 
questa è la query risultante.
 
IDOrd	IDFornitIDProdo	QtaOrdinata	NumeroOrdine	QtaRicevuta
41	7	22	34		Or001/2015	34
42	15	27	20		Or002/2015	18
43	12	24	10		Or003/2015	10
44	7	22	22		Or004/2015	5
44	7	22	22		Or004/2015	12
44	7	23	14		Or004/2015	5
44	7	23	14		Or004/2015	12
 
 
SELECT
   qryProdottiOrdinati.IDOrdine,
   qryProdottiOrdinati.IDFornitore,
   qryProdottiOrdinati.IDProdotto,
   qryProdottiOrdinati.QtaOrdinata,
   qryProdottiOrdinati.NumeroOrdine,
   qryProdottiArrivati.QtaRicevuta
FROM qryProdottiOrdinati
INNER JOIN qryProdottiArrivati
   ON qryProdottiOrdinati.IDOrdine = qryProdottiArrivati.IDOrdine
GROUP BY qryProdottiOrdinati.IDOrdine,
          qryProdottiOrdinati.IDFornitore,
          qryProdottiOrdinati.IDProdotto,
          qryProdottiOrdinati.QtaOrdinata,
          qryProdottiOrdinati.NumeroOrdine,
          qryProdottiArrivati.QtaRicevuta;
 
vorrei capire perchè raddoppia i record con più righe invece
di inserire, come nei record con un solo prodotto, la Qtaricevuta.
 
Grazie
 
Daniele