Newsgroup: it.comp.appl.access
Titolo: Query: visualizzare i dati solo se di un certo tipo

Salve a tutti. Scusate il subject poco significativo, ma n on mi viene in
mente niente altro per descrivere il problema
.
Mi è stato fornito un DB in A97 strutturato in questo modo:
Tabella "Anagrafica":
Cognome
Nome
...
ID_Domanda: che è un numero sempre diverso
Tipo domanda: sono le varie tipologie di domande che possono essere fatte
(A, B, C, D, ecc..)
Poi c'è una tabella per ogni tipo di domanda
Tabella con i dati delle "Domande_A"
ID_DOMANDA
DATO1
DATO2
...
Tabella con i dati delle "Domande_B"
ID_DOMANDA
DATO1
DATO2
...............ecc.....
Vorrei poter visualizzare i dati anagrafici e accanto a questi le
informazioni relative alle varie tipologie di domande fatte.
Ho provato con questa query:
SELECT ANAGRAFICA.COGNOME, ANAGRAFICA.NOME, ANAGRAFICA.ID_DOMANDA,
ANAGRAFICA.TIPO_DOMANDA, DOMANDE_A.DATO1, DOMANDE_A.DATO2, DOMANDE_B.DATO1,
DOMANDE_B.DATO2, DOMANDE_C.DATO1, DOMANDE_C.DATO2
FROM ((ANAGRAFICA LEFT JOIN DOMANDE_A ON ANAGRAFICA.ID_DOMANDA =
DOMANDE_A.ID_DOMANDA) LEFT JOIN DOMANDE_B ON ANAGRAFICA.ID_DOMANDA =
DOMANDE_B.ID_DOMANDA) LEFT JOIN DOMANDE_C ON ANAGRAFICA.ID_DOMANDA =
DOMANDE_C.ID_DOMANDA;
Per prima cosa l'esecuzione è lentissima, poi per ogni record di
"ANAGRAFICA", visualizzo tutti i record di tutte le tabelle delle "DOMANDE",
anche se vuoti.
Mi chiedo se sia possibile creare una query che visualizzi, in funzione del
tipo di domanda, SOLO i dati della tipologia di domanda associata.
Grazie a tutti.
Giancarlo


          in effetti, secondo me, se le tabelle domande_a ..._b ..._c hanno la stessa
struttura l'errore è stato crearne n: bisognava farne 1 sola con in + il
campo tipo_domanda (A,B,C, ... ) e toglierlo di conseguenza dalla tab
anagrafe dove non ti serve +;
ma tutto ciò andava bene all'inizio, ora invece mi sa che devi metterci una
pezza, dico bene ?
se ho capito bene la tua query, e le tue esigenze, prova a sostituire nel
sql che hai scritto
   DOMANDE_A.DATO1
con
   dato1A: IIf([ANAGRAFICA]![tipo_domanda]='A';[DOMANDE_A]![DATO1];'')
in sostanza restituisce il dato1 della tab A se e solo nella tab anagrafe il
campo tipo_domanda è uguale ad A se è la risposta che cercavi mi sa che devi
replicare la stringa per tutti i successivi campi... certo non sarà un
missile a eseguirsi sta query!
sono stato utile? (speriamo)
Giovanni T
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 missile a eseguirsi sta query!
Se faccio come mi suggerisci però, ottengo comunque la visualizzazzione di
tutti i campi di tutte le tabelle "DOMANDE" anche se vuoti. Vorrei ottenere
questo:
Se 'Tizio' ha fatto domande di tipo A:
Cognome
Nome
ID_DOMANDA
DATO1_A
DATO2_A
Se invece ha fatto domande di tipo B:
Cognome
Nome
ID_DOMANDA
DATO1_B
DATO2_B


 Giancarlo
Ciao,
puoi creare una query di unione per simulare una unica tabella, poi la usi
in Join con l'anagrafica
es..
-------------------
SELECT "A" AS Tipo,
               ID_DOMANDA
               DATO1
               DATO2
FROM   Domande_A
UNION ALL
SELECT "B" AS Tipo,
               ID_DOMANDA
               DATO1
               DATO2
FROM   Domande_B
UNION ALL
SELECT "C" AS Tipo,
               ID_DOMANDA
               DATO1
               DATO2
FROM   Domande_C
UNION ALL
SELECT "D" AS Tipo,
               ID_DOMANDA
               DATO1
               DATO2
FROM   Domande_D
-------------------------
(La ALL dopo la UNION in questo caso serve se DATO1 e DATO2 sono di tipo
MEMO in altro caso puoi anche toglierla)
Ciao Giorgio

 ....
basta incasinare un po' il tuo sql :
invece di quello che ti ho detto prima metti il seguente
dato1:
IIf([ANAGRAFICA]![tipo_domanda]='A';[DOMANDE_A]![DATO1];IIf([ANAGRAFICA]![tipo_domanda]='B';[DOMANDE_B]![DATO1];IIf([ANAGRAFICA]![tipo_domanda]='C';[DOMANDE_C]![DATO1];'')))
ti restituisci il dato1 della tabella corrispondente al tipo domanta
se [ANAGRAFICA]![tipo_domanda]='A' allora [DOMANDE_A]![DATO1];
altrimenti
se [ANAGRAFICA]![tipo_domanda]='B' allora [DOMANDE_B]![DATO1];
altrimenti
se [ANAGRAFICA]![tipo_domanda]='C' allora [DOMANDE_C]![DATO1];
...se hai + di 3 tipi A, B e C, al posto degli ultimi 2 apici (dopo l'ultimo
; ) devi proseguire con la nidificazione delle funzioni iif ma occhio credo
ci sia un limite, forse non + di 9 una dentro l'altra ...)
riciao


 ha scritto nel messaggio
news:81Z208Z60Z192Y...@usenet.libero.it...

Mi sembra che funzioni.
Grazie.
