SQLite возвращает записи, которые соответствуют определенному набору записей в другой таблице - PullRequest
1 голос
/ 04 мая 2011

У меня есть таблица, которая имеет отношение «один ко многим» с другой таблицей.Я хочу, чтобы записи из первой таблицы соответствовали определенному набору во второй таблице.

CREATE TABLE A (aId INTEGER PRIMARY KEY);
CREATE TABLE B (bId INTEGER PRIMARY KEY, aId INTEGER, c INTEGER);

INSERT INTO A (aId) VALUES (1);
INSERT INTO A (aId) VALUES (2);

INSERT INTO B (bId, aId, c) VALUES (1, 1, 1);
INSERT INTO B (bId, aId, c) VALUES (2, 1, 2);
INSERT INTO B (bId, aId, c) VALUES (3, 2, 2);
INSERT INTO B (bId, aId, c) VALUES (4, 2, 3);

Например, я был aId, где c равно 1 и 2. поэтому aId = 1. Я не хочучтобы вернуть aId 2, потому что, хотя он соответствует c = 2, он не имеет c = 1.

SELECT aId FROM B WHERE c IN(1,2);

Дает мне 1,1,2.Есть ли что-то похожее, что соответствует всем элементам, а не любому?

1 Ответ

1 голос
/ 05 мая 2011

Если вы знаете, сколько элементов в предложении IN для C,

SELECT aID FROM B WHERE C IN(1,2) GROUP BY aID HAVING COUNT(*)=2;

где COUNT(*) равно числу элементов в IN. Если фильтр более сложный, нам понадобится другой подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...