Richard Broersma Jr wrote:
Here is the example that doesn't do what I expect:
I'm guessing you're just stood too close to the problem.
--find all parents that have a mixture of boys and girls.
--but this doesn't return anything
SELECT *
FROM Parents AS P
WHERE 'girl' <> ALL ( SELECT gender
FROM Children AS C1
WHERE C1.parentid = P.parentid )
AND 'boy' <> ALL ( SELECT gender
FROM Children AS C1
WHERE C1.parentid = P.parentid );
This translates to
WHERE <none of the children are girls>
AND <none of the children are boys>
Assuming you have a two-state gender then that's nothing.
For 'girl' <> ALL (...) then all the values you test must be not girls.
--This query gets what I want
--but I believe that it shouldn't return anything
SELECT *
FROM Parents AS P
WHERE 'girl' <> ANY ( SELECT gender
FROM Children AS C1
WHERE C1.parentid = P.parentid )
AND 'boy' <> ANY ( SELECT gender
FROM Children AS C1
WHERE C1.parentid = P.parentid );
Translates to:
WHERE <any child is not a girl> AND <any child is not a boy>
So - at least one of each.
--
Richard Huxton
Archonet Ltd
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster