Query Unione restituisce valore ID anziché valore campo

di il
7 risposte

Query Unione restituisce valore ID anziché valore campo

Ciao, ho dato un'occhiata a vecchi forum a riguardo ma il link che credo potesse rispondere al mio quesito non è più valido.
Ho 5 query i cui campi sono:
tipo, contratto, note, chiuso, gestore
ogni query "filtra" un tipo diverso ed un "chiuso" diverso.
il campo "gestore" viene compilato in tabella attraverso una ricerca guidata dalla relativa tabelle [gestore] così impostata:

[gestore]
Nome campo => ID => contatore automatico
Nomce campo => Campo1 => testo breve (cui corrispondono i valori Marco e Daniele)

fino a qui tutto bene, tutte 5 le query restituiscono i dati selezionati con i relativi valori.

Quando faccio query unione, il campo [gestore], anziché restituire Marco o Daniele, restituisce l'ID (1 o 2). non riesco a capire cosa debba fare.
qui l'SQL della query unione:

SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso4, contadata.gestore
FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
WHERE (((contadata.tipo)=5) AND (([Inserimento Query].chiuso4)<>True))
UNION
SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso2, contadata.gestore
FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
WHERE (((contadata.tipo)=4) AND (([Inserimento Query].chiuso2)<>True))
UNION
SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso1, contadata.gestore
FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
WHERE (((contadata.tipo)=2) AND (([Inserimento Query].chiuso1)<>True))
UNION
SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso, contadata.gestore
FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
WHERE (((contadata.tipo)=3) AND (([Inserimento Query].chiuso)<>True))
UNION SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso3, contadata.gestore
FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
WHERE (((contadata.tipo)=6) AND (([Inserimento Query].chiuso3)<>True));

come posso risolvere?
grazie

7 Risposte

  • Re: Query Unione restituisce valore ID anziché valore campo

    Nella query devi includere anche la tabella madre Gestori, quindi prendere il campo testo (presumo) [Gestore].

    P.S.: In base al regolamento, quando scrivi codice VBA o SQL, devi:
    1. Cliccare in basso al rettangolo editor dove scrivi il testo "Editor completo & Anteprima": apparirà una finestra/rettagnolo più grande con vari comandi di formattazione in alto.
    2. Quindi seleziona la porzione di codice e clicca sul tasto in alto </> (codice). In questo modo apparirà con i tipici caratteri monotype più familiari ai programmatori.
    Puoi ancora farlo (solo tu puoi farlo), sulla tua discussione, cliccando sull'icona in alto a destra a forma di matita.
  • Re: Query Unione restituisce valore ID anziché valore campo

    Ciao scusami mi era proprio sfuggita quella parte, riecco il codice dopo averlo selezionato e utilizzato il pulsante "</>" (mi pare però che abbia solo aggiunto
    all'inizio e 
    alla fine...

    Quando intendi di inserire la query madre intendi nelle singole query che poi vado ad accodare?
    grazie

    SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso4, contadata.gestore
    FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
    WHERE (((contadata.tipo)=5) AND (([Inserimento Query].chiuso4)<>True))
    UNION
    SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso2, contadata.gestore
    FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
    WHERE (((contadata.tipo)=4) AND (([Inserimento Query].chiuso2)<>True))
    UNION
    SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso1, contadata.gestore
    FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
    WHERE (((contadata.tipo)=2) AND (([Inserimento Query].chiuso1)<>True))
    UNION
    SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso, contadata.gestore
    FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
    WHERE (((contadata.tipo)=3) AND (([Inserimento Query].chiuso)<>True))
    UNION SELECT contadata.tipo, contadata.contratto, contadata.note, [Inserimento Query].chiuso3, contadata.gestore
    FROM contadata INNER JOIN [Inserimento Query] ON contadata.contratto = [Inserimento Query].contratto
    WHERE (((contadata.tipo)=6) AND (([Inserimento Query].chiuso3)<>True));
  • Re: Query Unione restituisce valore ID anziché valore campo

    marco_bs ha scritto:


    Quando intendi di inserire la query madre intendi nelle singole query che poi vado ad accodare?
    La query contadata dovrebbe bastare.
    Al 99% secondo me il problema è dato dall'uso del campo a ricerca guidata, se ho inquadrato bene la situazione. Pessima scelta.
  • Re: Query Unione restituisce valore ID anziché valore campo

    Io nn capisco perchè fai praticamente la stessa cosa 5 volte per poi fare una union ...
    un unico filtro era brutto? primo criterio OR secondo criterio OR ...
  • Re: Query Unione restituisce valore ID anziché valore campo

    Ci avevo pensato a farne una sola, ma non sapevo come concatenare i diversi "OR"...
    in sostanza per ogni campo "tipo" corrisponde un campo "chiuso" (si/no)...
    per esempio al (contadata.tipo) = 5 corrisponde il (chiuso4) <> True
  • Re: Query Unione restituisce valore ID anziché valore campo

    marco_bs ha scritto:


    Ci avevo pensato a farne una sola, ma non sapevo come concatenare i diversi "OR"...
    Gli OR si possono ottenere in Visualizzazione struttura query scendendo nelle varie righe Oppure.
  • Re: Query Unione restituisce valore ID anziché valore campo

    marco_bs ha scritto:


    Ci avevo pensato a farne una sola, ma non sapevo come concatenare i diversi "OR"...
    in sostanza per ogni campo "tipo" corrisponde un campo "chiuso" (si/no)...
    per esempio al (contadata.tipo) = 5 corrisponde il (chiuso4) <> True
    prendi le 5 WHERE, ognuna la metti tra parentesi (togliendo il WHERE) e le metti in OR
    es:
    
    where condA1 and condA2
    where condB1 or condB2
    ----->
    where (condA1 and condA2) OR (condB1 or condB2)
    
Devi accedere o registrarti per scrivere nel forum
7 risposte