2 つのテーブルがあるとします。1 つは果物の容器用、もう 1 つは果物用です。このような:
CREATE TABLE Containers
(
ContainerID int,
ContainedFruit int
)
CREATE TABLE Fruit
(
FruitID int,
Name VARCHAR(16)
)
INSERT INTO Fruit VALUES ( 1, 'Apple' )
INSERT INTO Fruit VALUES ( 2, 'Banana' )
INSERT INTO Fruit VALUES ( 3, 'Cherry' )
INSERT INTO FRUIT VALUES ( 4, 'Date' )
INSERT INTO Containers VALUES ( 101, 1 )
INSERT INTO Containers VALUES ( 101, 1 )
INSERT INTO Containers VALUES ( 102, 1 )
INSERT INTO Containers VALUES ( 102, 2 )
INSERT INTO Containers VALUES ( 102, 3 )
INSERT INTO Containers VALUES ( 103, 3 )
INSERT INTO Containers VALUES ( 103, 4 )
INSERT INTO Containers VALUES ( 104, 3 )
フルーツの TYPE が 1 つしかないすべてのコンテナー ID を検索したいと考えています。リンゴを 2 つ入れることも (コンテナ 101 の場合)、1 つだけ入れることもできます (コンテナ 104)。しかし、コンテナー 102 と 103 には 2 種類の果物が入っているので、それらを含めたくありません。
コンテナー 101 と 104、および将来的に 1 種類の果物しかない他のコンテナーを取得する SELECT を実行するにはどうすればよいでしょうか?
- 編集 -
OK、それは実際には私の質問の半分です。
3 番目のテーブルがあるとします。これにより、コンテナが一意に識別されます。とにかく、この構造ではちょっと暗示されています:
INSERT INTO FRUIT VALUES ( 0, 'Mixed' )
CREATE TABLE Each_Container
(
Container ID int PRIMARY KEY,
FruitType int
)
INSERT INTO Each_Container VALUES ( 101, 0 )
INSERT INTO Each_Container VALUES ( 102, 0 )
INSERT INTO Each_Container VALUES ( 103, 0 )
INSERT INTO Each_Container VALUES ( 104, 3 )
この時点で、最初の 3 つのコンテナーが MIXED としてマークされます。4番目はチェリーのコンテナです。しかし、ここに私の質問があります:
101 のような誤ってマークされたすべてのコンテナーを更新するにはどうすればよいですか? 同じ種類の果物なのに、複数の果物が入っているため、MIXED とのみマークされているものはありますか? 102 と 103 は混合すべきですが、101 は混合すべきではありません。