Newsgroup: it.comp.appl.access
Titolo: Valori uguali in un campo

Buongiorno a tutti. Ho un piccolo quesito sul quale ci sto girando e
rigirando ma non ne riesco a venire a capo. Una tabella "TBL1", due campi
"C1", C2". Devo estrarre tutti i C2 comuni a TUTTI i C1. Esempio :
C1 C2
----------------
AA1 1
AA1 2
AA1 3
AA2 1
AA2 4
AA3 1
AA3 2
Ecco il risultato che vorrei ottenre in questo caso e' 1 (C2 comune a tutti
i C1).
Grazie in anticipo per il vostro sempre prezioso aiuto. Buona giornata.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie in anticipo per il vostro sempre prezioso aiuto. Buona giornata.
Certo che pure voi �, quando fate ste domande vi spiegate con i piedi! :-D
ma scusa, come potremmo mai capire se ci scrivi che vuoi i risultati comuni 
e poi in C1 ci metti "AA1" e in C2 ci metti "1" ???? Non sono comuni per 
niente...
Se me ne vado per idea, posso provare ad intuire che vuoi la parte 
"numerica" del contenuto di C1 ovvero "AA1" comune al contenuto di C2 ovvero 
"1"...
cmq, se ho INTUITO bene... f� sta query :
SELECT Sum(IIf(Int(Right([C1],1))=Int([c2]),1,0)) AS Risultato FROM TBL1;
;-)
-- 
---
Ciao
Pablitomf
FORZA NAPOLI - - - SEMPRE!
Tifosi Napoletani, gente fantastica
http://it.youtube.com/watch?v=gUqFHOXrK-M&feature=related
 


Ciao e grazie innanzitutto della risposta. Forse mi sono spiegato male e me
ne scuso, ma la cosa, penso, sia molto piu' semplice. Forse il fatto che
abbia scritto ESTRARRE ha tratto in inganno. Quello che a me serve e'
semplicemente ricevere (da una query, una funzione o non so cosa) tutti i
"C2" COMUNI a "C1" che , naturalmente, e' ripetuto perche' puo' contenere
TANTI C2. Io di C1 non voglio niente, nessuna parte del campo, a me serve
solo C2. Nell'esempio, che pensavo fosse banale, anche il campo C1 forse ha
tratto in inganno. Invece di AA1 , AA2, AA3, chiamiamoli pure AAA, BBB, CCC
(dato che raggruppati sono 3) e, scorrendo C2, il solo valore comune e' "1"
(ma valore inteso come risultato della selezione), perche' e' presente su
AA1 (o AAA), AA2 (o BBB) e su AA3 (o CCC). Questo e' quello che vorrei
ricevere. Non so se sono stato chiaro, spero di si. Grazie comunque.


 "C1", C2". Devo estrarre tutti i C2 comuni a TUTTI i C1. Esempio :
Io farei due query la prima (la chiamo Q)
select c1, count(c2) as NumOcc from tbl1
la seconda contiene una innerjoin poiche' non mi ricordo la sintassi la 
sviluppo con la where
select tbl1.c2 from tbl1, q where tbl1.c1 = q.c1
group by c2 having count(c2) = NumOcc
--
ac

 select c1, count(c2) as NumOcc from tbl1
sorry
select c1, count(c2) as NumOcc from tbl1 group by c1
--
ac

 ricevere. Non so se sono stato chiaro, spero di si. Grazie comunque.
Ah ok... ora sei stato chiaro...
una sola cosa... ma COMUNI per te vuol dire che c'� su tutti e 3 i C1?... o 
basta che sia comune a pi� di 1 solo C1?.... nel senso :
AAA - 1
BBB - 1
CCC - 1
� comune 1...
ma
AAA - 1
BBB - 2
CCC - 1
non � comune 1? o lo � cmq perch� st� sia su AAA che su CCC?



Si esatto devo avere solo quelli COMUNI A TUTTI e non basta che sia presente
su piu' di uno.
Come nell'esempio , "1" e' l'unico comune a tutti (ed e' il mio risultato).
Grazie


 Grazie
Ok...
crea questa query a campi incrociati e denominala "TBL1_INCROCIATA":
TRANSFORM Count(
TBL1.ID
) AS ConteggioDiID
SELECT TBL1.C2, Count(TBL1.C1) AS COMUNI
FROM TBL1
GROUP BY TBL1.C2
PIVOT TBL1.C1;
poi ne crei un altra basata sulla stessa :
SELECT TBL1_INCROCIATA.C2, TBL1_INCROCIATA.COMUNI
FROM TBL1_INCROCIATA
WHERE (((TBL1_INCROCIATA.COMUNI)=3));
ho messo 3 come limite perch� tu hai detto cos�... altrimenti adeguala se 
aumentano o diminuiscono...
;)



Grazie veramente tanto. Per essere sicuro di avere sempre il limite giusto
basta che raggruppo e conto i C1 e li conteggio lo metto come filtro al
posto di "3" (ora fisso).
Ciao e Buona giornata


 Ciao e Buona giornata
bh� se � per questo lo puoi avere anche dinamico... basta che metti come 
filtro in dcount di un sql che raggruppi i C1.
Crea questa query e denominala "ContaC1"
SELECT TBL1.C1
FROM TBL1
GROUP BY TBL1.C1;
a questo punto la vecchia :
SELECT TBL1_INCROCIATA.C2, TBL1_INCROCIATA.COMUNI
FROM TBL1_INCROCIATA
WHERE (((TBL1_INCROCIATA.COMUNI)=3));
la fai diventare:
SELECT TBL1_INCROCIATA.C2, TBL1_INCROCIATA.COMUNI
FROM TBL1_INCROCIATA
WHERE (((TBL1_INCROCIATA.COMUNI)=DCount("[ContaC1].[C1]","[ContaC1]")));
cos� se aumentano i tipi di C1 aumenta di conseguenza dinamicamente anche il 
criterio nella query che ti ho postato, senza che ci metti mano tu.


 ha scritto nel messaggio 
news:82Z112Z6Z2Y12...@usenet.libero.it...

Prova con:
Select tb1.* From tabella tb1 Where right(tb1.[C1],1) In (Select tb2.C2 From 
tabella tb2 Group by tb2.C2)
Ciao.
-- 
Sergio MAZZA