【发布时间】:2021-01-19 05:52:25
【问题描述】:
我有一张items 的表格,包含以下列:
ID, name
以及这些项目的properties 表格,包含这些列:
item, property, value
(其中item 是一个外键,指向items 表中的ID - 显然一个“项目”可能有从零到许多不同的属性值对)
我想要得到的是:
- 所有项目 ID
- 具有特定名称
- 有一个或多个(属性-值)对。
我已经设法获得了 ONE 属性值的预期结果,如下所示:
SELECT items.id FROM items
INNER JOIN properties ON properties.item=items.id
WHERE items.name='person'
AND properties.property='someproperty' AND properties.value = 'somevalue'
这会返回我确实具有属性someproperty和值somevalue的项目的ID。
如果我想检查它是否有 ONE OF 给定的对,我会这样做:
SELECT items.id FROM items
INNER JOIN properties ON properties.item=items.id
WHERE items.name='person'
AND (
(properties.property='someproperty' AND properties.value = 'somevalue') OR
(properties.property='someproperty2' AND properties.value = 'somevalue2')
....
)
问题是我想要相同的,但是当它满足所有给定属性时(技术上不是OR,而是AND)。
我该怎么做?
有什么想法吗?
【问题讨论】:
标签: sql database sqlite intersection