Condividi tramite

Query di unione per fare una select su più tabelle con un'unica query

Anonimo
2012-01-31T10:01:54+00:00

Ciao,

l'obiettivo è quello di creare una query di selezione o unione a partire da alcune tabelle importate che mi selezioni solo alcuni dati. Volevo chiedere se fosse necessario ripetere queste query per tutte le tabelle o ci fosse un modo per automatizzare il tutto (è possibile solo con il codice oppure anche in altro modo). I dati da selezionare hanno un codice numerico ORDINE e come risultato finale vorrei avere una query che contenga i dati (che avevano associato il numero ORDINE) delle varie nell'ordine crescente di questo numero. Mi basterebbe qualche consiglio per poi lavorarci direttamente io stesso.

Grazie,

Andrea

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-02-01T11:38:19+00:00

1) Quello che mi piacerebbe avere è o una query unione che mantenga l'ordine dei paesi del codice (nell'esempio: aut, ger, esp, tur)

 

  1. oppure una query unione che mi metta prima tutti i dati di aut, poi quelli di ger,...

La soluzione 1 è ottenibile modificando il codice in questo modo:

SELECT "aut" as Nazione, 1 as Posizione, Ordine, MTOE, [1960], ..., [2030]

FROM aut WHERE Ordine <> 0

UNION

SELECT "ger" as Nazione, 2 as Posizione , Ordine, MTOE, [1960], ..., [2030]

FROM grc WHERE Ordine <> 0

ORDER BY Ordine, Posizione;

mentre la soluzione 2 può essere ottenuta in questo modo:


SELECT "aut" as Nazione, 1 as Posizione, Ordine, MTOE, [1960], ..., [2030]

FROM aut WHERE Ordine <> 0

UNION

SELECT "ger" as Nazione, 2 as Posizione , Ordine, MTOE, [1960], ..., [2030]

FROM grc WHERE Ordine <> 0

ORDER BY Posizione, Ordine;


David

La risposta è stata utile?

0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-01-31T13:47:47+00:00

    Ciao Andrea,

    per quanto rigurda l'esport verso diversi fogli Excel:

    non sò se hai qualche motivo ( forse successive elaborazioni in Access )  per utilizzare la UNION.

    Il risultato della UNION, forse, non ti consente più di individuare quali occorrenze estrarre per ciascun esport Excel ( salvo che non aggiungi un campo nelle Select che ti individui l'origine ).

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-01-31T11:47:36+00:00

    Ciao Andrea,

    la tua query deve includere la colonna Ordine e l'Order by diventa posizionale ad es.:

    SELECT aut.Ordine, aut.MTOE, aut.[1960], aut.[1961], aut.[1962], aut.[1963], ..., aut.[2029], aut.[2030]

    FROM aut

    WHERE (((aut.ORDINE)<>0))

    ORDER BY 1

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-01-31T11:15:03+00:00

    Ciao,

    capito il tuo consiglio però volevo chiedere un chiarimento. Di seguito riporto il codice Sql della query di selezione che devo fare per ogni tabella:

    SELECT aut.MTOE, aut.[1960], aut.[1961], aut.[1962], aut.[1963], ..., aut.[2029], aut.[2030]

    FROM aut

    WHERE (((aut.ORDINE)<>0))

    ORDER BY aut.ORDINE;

    Facendo la query unione con un altro identico sql di selezione mi dà un primo errore dicendomi che non posso ordinare per una colonna che non appare nella selezione (in teoria voglio che non appaia se fosse possibile). Aggiungendo quella colonna mi dà un ulteriore errore dicendomi che: L'espressione ORDER BY (rfa.ORDINE) include campi non selezionati dalla query. Solo i campi richiesti nella prima query possono essere inclusi in un'espressione ORDER BY.

    Come devo comportarmi?

    In seguito questi dati dovranno essere esportati in fogli di uguale struttura in diversi file excel. E' conveniente fare una query di unione?

    Grazie,

    Andrea

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-01-31T10:29:30+00:00

    Ciao Andrea,

    a differenza delle altre tipologie, le query di unione devi scriverla come Sql diretta.

    Risulta comodo creare una query di selezione su una delle tabelle e quindi, spostandosi su Sql, con copia e incolla puoi mettere in UNION le altre.

    Per esempio tramite drag & drop genero la mia query:

    Select Campo1, Campo2, Campo3 From miaTabella Where Campo3>100

    quindi spostandomi in SQL copio il tutto generando:

    Select Campo1, Campo2, Campo3 From miaTabella Where Campo3>100 UNION

    Select Campo1, Campo2, Campo3 From miaTabellaSeconda where Campo3<100.....

    Da notare che il numero ed il tipo dei campi selezionati devono coincidere.

    La risposta è stata utile?

    0 commenti Nessun commento