多対多のクエリについて教えてください。
MS Access 2010 で構築された ACE データベースがあります。次のテーブルがあります。
Flags
flagID flagName country
1 Stars and Stripes USA
2 French Tricolour France
3 The Yellow and Blue Sweden
4 Union Jack UK
5 Jolly Roger Pirates
6 Trinacria Sicily
Colours
colourID colour
1 Red
2 Blue
3 White
4 Black
5 Yellow
Juntion
JID fkFlags fkColours
For brevity, I’ll omit the field values from the Junction table.
テーブルをクエリすると
SELECT Flags.flagName, Flags.country, Colours.colour
FROM Flags INNER JOIN
(Colours INNER JOIN Juntion ON Colours.colourID = Juntion.fkColours)
ON Flags.flagID = Juntion.fkFlags
WHERE Flags.flagName = 'Jolly Roger' OR Flags.flagName = 'Stars and Stripes';
私の結果は私が期待するものです。
flagName country colour
Stars and Stripes USA Red
Stars and Stripes USA White
Stars and Stripes USA Blue
Jolly Roger Pirate Black
Jolly Roger Pirate White
同様に、テーブルをクエリすると
SELECT Flags.flagName, Flags.country, Colours.colour
FROM Flags INNER JOIN (Colours INNER JOIN Juntion ON Colours.colourID = Juntion.fkColours)
ON Flags.flagID = Juntion.fkFlags
WHERE Colours.Colour IN ((
SELECT C.colour
FROM Flags INNER JOIN (Colours C INNER JOIN Juntion ON C.colourID = Juntion.fkColours)
ON Flags.flagID = Juntion.fkFlags
WHERE (c.Colour = 'White')
))
OR Colours.Colour IN ((
SELECT C.colour
FROM Flags INNER JOIN (Colours C INNER JOIN Juntion ON C.colourID = Juntion.fkColours)
ON Flags.flagID = Juntion.fkFlags
WHERE (c.Colour = 'Blue')
))
私の結果は私が期待するものです。
flagName country colour
Stars and Stripes USA White
Stars and Stripes USA Blue
The Yellow and Blue Sweden Blue
Jolly Roger Pirate White
French Tricolor France Blue
French Tricolor France White
Union Jack UK White
Union Jack UK Blue
ただし、私が本当に望んでいるのは、color = Red、White AND Blue のすべての flagNames の結果を取得することです。
Stars and Stripes
French Tricolour
Union Jack
また、'Stars and Stripes' と 'Jolly Roger' の flagNames を考えると、それらは何色を共有していますか?
White
上記の最後のクエリの例で、OR を AND に変更すると、結果はまったく返されません。それらのクエリを書くのを手伝ってもらえますか?
御時間ありがとうございます。