Se ho "interpretato" bene la domanda tu vuoi
trovare tutti e solo i record che:
___ 1°) _____
Al campo IdA hanno valore 7 oppure 8 ( come da criterio )
___ 2°) _____
Al campo IdB hanno dei valori uguali ( intesi sulla verticale )
quindi tu non conosci a priori il criterio da porre a IdB
ma puoi solo dire che il Count di IdB deve essere maggiore di 1
____________________________________________________________________
Quindi se ho interpretato bene data la tabella "tab1"
con i campi:
___ ID ___ Numerico
___ Cod ___ Numerico
___ IdA ___ Numerico
___ IdB ___ Numerico
Io vedo 2 possibilita di risolvere ( lascio a te la scelta )
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
__ 1° possibilita ___ 2 query nidificate l'una nell'altra ( Non Editabile )
SELECT
tab1.ID, tab1.Cod, tab1.IdA, tab1.IdB
FROM
tab1
INNER JOIN
(
SELECT
tab1.IdB
FROM
tab1
GROUP BY
tab1.IdB,
IIf([IdA]=7,"Vi") & IIf([IdA]=8,"Vi")
HAVING
(
(( IIf([IdA]=7,"Vi") & IIf([IdA]=8,"Vi") ) Is Not Null)
AND
((Count(tab1.IdB))>1)
)
) AS S01
ON
tab1.IdB = S01.IdB
WHERE
(( (tab1.IdA)=7 Or (tab1.IdA)=8 ))
;
__ 2° possibilita ___ non nidifichi niente ma usi la clausola "In" ( Editabile )
( concettualmente è la più difficile ma "voci di popolo" dicono sia la più veloce )
SELECT
tab1.ID, tab1.Cod, tab1.IdA, tab1.IdB
FROM
tab1
WHERE
(
((tab1.IdA)=7 Or (tab1.IdA)=8)
AND
(
(tab1.IdB) In
(
SELECT
tab1.IdB
FROM
tab1
GROUP BY
tab1.IdB,
IIf([IdA]=7,"Vi") & IIf([IdA]=8,"Vi")
HAVING
(
(( IIf([IdA]=7,"Vi") & IIf([IdA]=8,"Vi") ) Is Not Null)
AND
((Count(tab1.IdB))>1)
)
)
)
)
;
Facci sapere
.