Newsgroup: it.comp.appl.access
Titolo: Help Creazione Query di ricerca

Ciao,
dovrei fare una query su access per un gestionale, ma non sono molto
pratico di SQL.
Allora io ho una tabella con 7 campi di tipo intero contenento dei
valori; cioè una cosa del genere :
ID|Campo1|Campo2|Campo3|Campo4|Campo4|Campo5|Campo6|
1 | C | A6 | C | G | T | Z | H |
2 | A1 | B | K | A4 | D | E | F |
3 | A5 | B | C | G | D | E | F |
Devo fare una query che mi restituisca l'ID del record
i cui campi(non importa quali) contengono 2 valori appartenenti ad
una
lista di valori.
Ipotizzando una lista formata dai valori A1,A2,A3,A4,A5,A6 come si
può
vedere l'unico record che mi soddisfa questa condizione è il record
numero 2,
in quanto sono presenti i valori A1 in Campo1 e A4 in Campo4.
Non sò come cominciare per cui se qualcuno mi desse una mano ......
glie ne sarei grato.
Grazie
Nik


Scusa ma non ho ben capito cosa vuoi fare,
PUOI mettere così intanto per filtrare con la query
nella visualizzazione struttura, in ogni campo scriverai sulla riga
criteri
"a1" or "a2" or "a3" or "an"
con l'operatore or , lui ti filta i campi e ti mostra solo i record
che contengono uno di quei valori
Ciao,
Samantha

 - Mostra testo tra virgolette -
Grazie Samantha, ma il modo che mi indichi, tira fuori i record in cui
è presente 1 o più valori ,della lista;
Io invece voglio solo i record in cui siano presenti 2 DEI VALORI
appartenenti alla lista.
Cioè io voglio i record in cui ci siano ad esempio i valori A1 ed A2
oppure A1 ed A3 oppure A1 ed A4 ecc. ecc.
Spero di essermi spiegato.
Nik

 Nik
Scusa ma non ho ben capito cosa vuoi fare,
PUOI mettere cosě intanto per filtrare con la query
nella visualizzazione struttura, in ogni campo scriverai sulla riga
criteri
"a1" or "a2" or "a3" or "an"
con l'operatore or , lui ti filta i campi e ti mostra solo i record
che contengono uno di quei valori
No Samantah.
In questo modo qualunque record che ha almeno un valore di quelli viene
tirato fuori.
Allora, secondo me ci possono essere varie soluzioni, io farei questa:
ti crei 7 campi calcolati fatti cosě
Test1 : iif([campo1] IN ("a1";"a2";..."a7");1;0)
...
Test7 : iif([campo7] IN ("a1";"a2";..."a7");1;0)
Poi ti fai l'ultimo campo calcolato fatto cosě:
Test_finale : Test1 + Test2 + ... Testn
e sotto questo campo calcolato come criterio ci metti 2 o >= 2
Antonio


In prima battuta, da profana ti direi che è un casino farlo con le
query, dovresti farlo in sql
se tu prendi la tua query, vai sul menu visualizza e gli da sql, lui
ti mostra il codice in sql
io su varie righe ho fatto così
ID     CAMPO1        CAMPO2  CAMPO3
        "A1"                   A1
         A1                     A2
         A2                    A1
         A2                     A2
         A1                                  A1
        A1                                   A2
         A2                                  A1
         A2                                  A2
e via di seguito, poi visualizzando il codice SQL
SELECT Tabella1.ID1, Tabella1.campo1, Tabella1.campo2,
Tabella1.campo3, Tabella1.campo4
FROM Tabella1
WHERE (((Tabella1.campo1)="a1") AND ((Tabella1.campo2)="a1")) OR
(((Tabella1.campo1)="a2") AND ((Tabella1.campo2)="a2")) OR
(((Tabella1.campo1)="a1") AND ((Tabella1.campo2)="a2")) OR
(((Tabella1.campo1)="a2") AND ((Tabella1.campo2)="a1")) OR
(((Tabella1.campo1)="a1") AND ((Tabella1.campo3)="a2")) OR
(((Tabella1.campo1)="a1") AND ((Tabella1.campo3)="a1")) OR
(((Tabella1.campo1)="a2") AND ((Tabella1.campo3)="a2")) OR
(((Tabella1.campo2)="a1") AND ((Tabella1.campo3)="a2")) OR
(((Tabella1.campo2)="a2") AND ((Tabella1.campo3)="a1"));
PERò come puoi notare come soluzione èlunga e non tanto elegante...
Samantha

 Antonio
Non ho ben capito come funziona, perchè infondo al TEST1 ci metti
1;0      ???
Significa che se è 1 = vero
oppure 0 = falso
Per fortuna non mi serve... Hantonio :D
Samantha

 Antonio
Cara Samantah, tu devi imparare la sottile e antica arte dello sfoltimento
del quoting
Non ho ben capito come funziona, perchč infondo al TEST1 ci metti
1;0      ???
Significa che se č 1 = vero
oppure 0 = falso
Oltre alla sintassi della iif, tra l'altro
1 e 0 sono i valori che l'espressione assume se č verificato il test dato
dalla IN
quindi se č IN (NEL) insieme vale 1, altrimenti 0
Se la somma di tutto vale 2 significa che 2 campi soddisfacevano la
condizione
Antonio

 Antonio
Vi ringrazio per l'attenzione, sicuramente la soluzione di Antonio è
la più idonea, ma se ho capito bene(correggimi cortesemente Antonio se
sbaglio)il controllo (IF) lo dovrei fare via codice(java nel mio caso)
e ciò non sarebbe un problema.
Ma mi chiedo, anzi vi chiedo,se vorrei farlo ESCLUSIVAMENTE con una
istruzione SQL, non sarebbe possibile?
Grazie ancora.
Nik

 Antonio
Vi ringrazio per l'attenzione, sicuramente la soluzione di Antonio č
la piů idonea, ma se ho capito bene(correggimi cortesemente Antonio se
sbaglio)il controllo (IF) lo dovrei fare via codice(java nel mio caso)
e ciň non sarebbe un problema.
Ma mi chiedo, anzi vi chiedo,se vorrei farlo ESCLUSIVAMENTE con una
istruzione SQL, non sarebbe possibile?
Eehm...
andň (Tm.) sta scritto IF scusa?
io ho usato iif, espressione condizionale...
help on line, e scoprirai un mondo
Antonio