n° 185
Maggio/Giugno 2013
Maggio 26, 2013, 10:53:14 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: Come si fa questa semplicissima query??AIUTATEMI  (Letto 1180 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« inserita:: Giugno 30, 2004, 12:07:31 am »

Ciao Ragazzi, ho un problema davvero grosso,pensavo fosse una query molto semplice ma ...non so non riesco ad ottenere quello che voglio.
Vi spiego un attimo il problema (ACCESS 2000)

Io ho una tabella di nome tblTest e questi sono i campi
Nome   IDDOMANDA   Check
pippo           D1      a
topolino   D1   b
paperino   D1   c
paperino   D2   c
topolino   D2   b
pippo           D2   a
pippo           D3   a
topolino   D3   b
paperino   D3   c


E voglio estrare solo i nomi che hanno come campo check=\"a\" per IDDOMANDA = \"D1\" , nome campo check=\"a\" per IDDOMANDA=\"D2\" e nome campo check=\"a\" per IDDOMANDA=\"D3\"

la quesry che scrivo è questa:
SELECT nome,iddomanda
FROM tblTest
WHERE (
([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D1\')
And ([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D2\')
And ([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D3\')
);


MI CHIEDO come mai non mi restituisce:
a D1
a D2
a D3


Lo so mi direte è una cazzatina ma non ci riesco, non è che sql o il sql di jet non è capace di ragionare con più and annidati?

AIUTATEMI VI PREGO, UN APPELLO A TUTTI I GURU .
GRAZIE
 
Registrato
^0kkult0^
Jr. Member
**

Karma: +0/-0
Scollegato Scollegato

Messaggi: 205

0
Mostra profilo
« Risposta #1 inserita:: Giugno 30, 2004, 12:20:01 am »

non ho capito tanto bene, non potresti fare una cosa del tipo:

select nome,iddomanda from tlbTest where check = \'a\' ??

se non ho capito scusami Felice
Registrato

...and justice for all
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« Risposta #2 inserita:: Giugno 30, 2004, 12:51:31 am »

Perche se volessi solo le condizioni ...check =\"a\" and id domanda=\"D1\" and Check=\"b\" and idDomanda=\"D2\"

e non mi interessasse la D3 vorrei solo riprodotti i primi 2
Registrato
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« Risposta #3 inserita:: Giugno 30, 2004, 12:55:30 am »

Tieni conto che devo costruire nella mia applicazione una query al volo e che gli IDDOMANDA sono a migliaia.
Grazie comunque
Registrato
SimoneVB
Sr. Member
****

Karma: +3/-0
Scollegato Scollegato

Messaggi: 775


simonevb@live.it
Mostra profilo
« Risposta #4 inserita:: Giugno 30, 2004, 01:06:52 pm »

Citazione

E voglio estrare solo i nomi che hanno come campo check=\"a\" per IDDOMANDA = \"D1\" , nome campo check=\"a\" per IDDOMANDA=\"D2\" e nome campo check=\"a\" per IDDOMANDA=\"D3\"


SELECT nome FROM tblTest WHERE LEFT(iddomanda, 1) + check = \'Da\'

Questa è un\'ideuzza, se no puoi usare OR per valutare le tre
condizioni:
SELECT nome FROM tblTest WHERE
iddomanda + check = \'D1a\' OR
iddomanda + check = \'D2a\' OR
iddomanda + check = \'D3a\'

Registrato

--------------------------------------------------
Incredibilmente esistono ancora persone che
proteggono i propri PC con password=pippo.
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« Risposta #5 inserita:: Giugno 30, 2004, 03:32:56 pm »

il problema è che i dati devono essere filtrati a caduta, cioè quelli che escludo con la prima parte della subquery (dopo il/la where) è di selezionare quelli che hanno \"D1\" e \"a\" e solo dopo aver estratto questi scegliere tra questi quelli che rispettano al seconda condizione \"D2\" e \"a\" e così via .
Grazie per averci provato comunque
Ho provato anche con una cosa del genere ma ...nulla
SELECT [nome], [iddomanda]
FROM tblTest
WHERE (([iddomanda] & [check]=\"D2a\") AND ([iddomanda] & [check]=\"D1a\"));
 
ma non restituiesce assolutamente nulla, come maiiii.

Ciao e grazie a chi proverà a darmi una mano.
BobbyJean
Registrato
matimmo
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo
« Risposta #6 inserita:: Luglio 01, 2004, 02:39:45 pm »

Ciao bobbyjean, ti aiuterei volentieri ma non ho ben capito il tuo problema:

Nel primo messaggio hai detto di avere una tabella del tipo

Nome IDDOMANDA Check
---- --------- -----
pippo D1 a
topolino D1 b
paperino D1 c
paperino D2 c
topolino D2 b
pippo D2 a
pippo D3 a
topolino D3 b
paperino D3 c

e che facendo la query:

SELECT nome,iddomanda
FROM tblTest
WHERE (
([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D1\')
And ([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D2\')
And ([tblTest].[check] Like \'*a*\' And [tblTest].[IDDOMANDA]=\'D3\')
);


non ottieni:

a D1
a D2
a D3


Ma se nella query metti in SELECT i campi nome, iddomanda effettivamente non potrai mai ottenere \"a\" (che è nel campo check)

Il tuo problema è estrarre l\'elenco di tutti i nomi che hanno le tre righe righe con \"a\"? (una con \"D1\" e \"a\", un\'altra con \"D2\" e \"a\" e un\'altra con \"D3\" e \"a\")

Risultato di esempio (con i dati precedenti) solo un record con \"pippo\"?

Ciao
Registrato
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« Risposta #7 inserita:: Luglio 01, 2004, 03:19:16 pm »

Scusami , hai ragione stavo dormendo un sonno profondo quando ho scritto al forum.
Allora quello che mi interessa dalla query in pratica è ottenere il nominativo che contemporaneamente soddisfa TUTTE le condizioni che metto dopo la where:
Nella tabella che ho cercato di riprodurre

Nome IDDOMANDA Check
---- --------- -----
pippo    D1    a
PLUTO    D1    a    
topolino D1    b
paperino D1    c
paperino D2    c
topolino D2    b
pippo    D2    a
pippo    D3    a
topolino D3    b
paperino D3    c

esiste solo un nominativo che contemporaneamente ha i campi iddomanda=\"D1\" e Check=\"a\"
e
iddomanda=\"D2\" e Check=\"a\"
 
ma facendo la query:

SELECT nome
FROM tblTest
WHERE (
([tblTest].[check] =\'a\' And [tblTest].[IDDOMANDA]=\'D1\')
And ([tblTest].[check] =\'a\' And [tblTest].[IDDOMANDA]=\'D2\')
);


il motore Jet non mi restituisce nessun dato come mai?Che?!??

Aiutatemi
Registrato
matimmo
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 2


Mostra profilo
« Risposta #8 inserita:: Luglio 01, 2004, 03:39:21 pm »

Ok, effettivamente la query che hai scritto non può trovare nessun record perchè non esiste nessun record che può avere contemporaneamente IDDOMANDA=\'D1\' e IDDOMANDA=\'D2\' e IDDOMANDA=\'D3\'

Se, come sembra, i tuoi record non contengono duplicazioni (ovvero se i 3 campi possono essere considerati come chiave per la tabella) e le condizioni di WHERE sono disgiunte (ovvero non esiste un record che soddisfa più condizioni) puoi risolvere il problema in questo modo:

SELECT Nome
FROM tblTest AS T
WHERE (T.IDDOMANDA=\'D1\' AND T.Check=\'a\') Or (T.IDDOMANDA=\'D2\' AND T.Check=\'a\') Or (T.IDDOMANDA=\'D3\' AND T.Check=\'a\')
GROUP BY Nome
HAVING Count(*)=3

Ovvero: ti chiedi quali sono i record che soddisfano le condizioni e riporti solo i nomi che raggruppando hanno un numero di record trovati pari al numero di condizioni imposte.

Con i tuoi dati l\'unico risultato è: \"pippo\"

Spero che questo ti risolva il problema

Ciao
Registrato
bobbyjean
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 19

0
Mostra profilo
« Risposta #9 inserita:: Luglio 01, 2004, 03:56:17 pm »

Fnziona davvero grazie user matimmo...devo cercare di capirla meglio mi dovrò ripassare un po di sql...quindi tu dici che dopo la where posso mettere tutte le condizioni che voglio e a seconda del numero di condizioni che  ho messo HAVING Count(*)=..?3,4,5 ...ecc ecc???
Grazie davvero, sei stato gentilissimo e cortesissimo.
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page