Unione di 3 tabelle / query utilizzando MS Access query di unione
Domanda
Ho costruito un database MySQL per i pagamenti delle bollette negozio. Tutti nel mio ufficio ha MS Access, così sto costruendo uno strumento di front-end di reporting di database con MS Access e il collegamento alle tabelle di MySQL sul back-end.
Ho creato alcune query di Access che fanno riferimento le tabelle di MySQL, fatto qualche manipolazione, e ora vogliono unire tre quesiti (con la stessa struttura della tabella) di nuovo in quello che posso costruire la mia relazione su.
Attraverso la mia ricerca ( articolo1 , article2 , e altri), ho scoperto che una query di unione è quello che mi serve. Posso unione 2 tavoli bene, ma quando cerco di unione il 3 °, la query non riesce a eseguire. Ho testato la query dell'Unione in ciascuna combinazione singolarmente, (1-2, 1-3, 2-3) ed eventuali opere accoppiamento. Sto cercando di capire quello che potrebbe essere sbagliato, al fine di incorporare il terzo query in un unico dell'Unione. Potete offrire qualche suggerimento?
Tabella 1 = A Tabella 2 = B Tabella 3 = C
SELECT A.Year, A.BillingQuarter, A.Name, A.ObjectCode, A.Amount
FROM A
UNION ALL SELECT B.Year, B.BillingQuarter, B.Name, B.ObjectCode, B.Amount
FROM B
UNION ALL SELECT C.Year, C.BillingQuarter, C.Name, C.ObjectCode, C.Amount
FROM C
;
* UPDATE * Dopo aver esportato ogni query alle tabelle standalone, sono stato in grado di eseguire un 3-tabella di query UNION ALL e fonderli insieme. Quindi il problema è chiaramente nel mio tentativo di UNION 3 query, non in 3 tabelle. Pensieri?
Grazie!
Soluzione
Non riesco a provare questo in Access ma funziona in SQL Server, selezionare le prime due tabelle con un sindacato come una tabella derivata allora tavolo UNION C e la tabella derivata.
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM
(SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A
UNION ALL
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B)
AS Derived
UNION ALL
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C
Può valere la pena guardare la progettazione dello schema / relazioni per vedere se questo può essere evitato.
Altri suggerimenti
Hai bisogno di un punto e virgola (;) per terminare la query. Vedi sotto:
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM
(SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM @A
UNION ALL
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM B)
AS Derived
UNION ALL
SELECT Year, BillingQuarter, Name, ObjectCode, Amount FROM C;