【发布时间】:2022-01-11 21:00:03
【问题描述】:
先决条件
我的文件中有两张表(关于黑胶唱片):
记录
| ID | Title |
|---|---|
| 1 | Title_1 |
| 2 | Title_2 |
样式
| ID | recordId | style |
|---|---|---|
| 1 | 1 | Blues |
| 2 | 1 | Disco |
| 3 | 2 | Blues |
| 4 | 2 | Electro |
(Styles.style 存储为 Integer,但此处为简单起见使用 String)
为表格样式设置以下条件:
Styles.recordId = 每个给定黑胶唱片的 Records.ID
->这是查找与一张特定黑胶唱片相关的所有样式所必需的
因此,存储了两个乙烯基:
Title_1 有布鲁斯、迪斯科两种风格
Title_2 有两种风格 Blues、Electro
问题
在我的 SELECT 查询中,我想查找具有某种风格的黑胶唱片
查找具有一种样式的标题
如果我想找到具有特定风格的黑胶唱片,这似乎很简单。
我用:
SELECT Records.Title
FROM Records
JOIN Styles ON Styles.recordId = Records.ID
WHERE Styles.style=Disco
得到想要的结果:
(Title_1)
查找更多样式的标题
比方说,我想找到所有风格的标题(布鲁斯和电子)
使用之前的语句并仅添加另一个语句似乎不起作用:
SELECT Records.Title
FROM Records
JOIN Styles ON Styles.recordId = Records.ID
WHERE Styles.style=Blues AND Styles.style=Electro
这不起作用,因为 Styles.style 列从不同时包含两种样式。
如何告诉 SQLite 返回所有满足要求的标题?输出应该是
(Title_2)
编辑:固定表格不呈现
【问题讨论】:
标签: python database sqlite group-by one-to-many