【发布时间】:2023-04-10 00:20:02
【问题描述】:
我有两个包含一对多关系的表。我应该如何为“多”方选择“单”方给定信息?我正在使用SQLite。
假设我们的第一个表 T1 是关于汽车的,第二个表 T2 是关于每辆车的缺陷的。
假设我们可以用一个整数来描述缺陷。
所以我们有:
CREATE TABLE T1 (
id INTEGER PRIMARY KEY,
[Other columns]
);
CREATE TABLE T2 (
carId INTEGER REFERENCES T1(id),
imperfection INTEGER
);
我们有几辆车的数据,每辆车都有许多缺陷。
给定一个代表缺陷的整数列表,我如何选择恰好具有这组缺陷的汽车?例如,假设我有 [1,5,7] 作为缺陷列表,我如何找出与汽车 19 匹配的?
如果有帮助,我希望每组独特的缺陷只有一个匹配项。
这个问题与DBA Stack Exchange question 中的问题类似,但是在上一个问题中,缺陷的数量是已知的。在这个问题中,我不知道不完美的数量。
【问题讨论】:
-
做一个 GROUP BY,使用 HAVING 和 COUNT。
-
什么意思不知道瑕疵的数量?您确实有一个类似 [1,5,7] 的列表。
-
@forpas 在链接的问题中,总是有两个不完美之处。结果,答案硬编码了这个假设。在这种情况下,预先不知道缺陷的数量。例如,下一个查询的列表可能是 [1,5,7,8]。
-
好吧,看看我的答案。
标签: sql sqlite count having-clause