需要一个MySQL查询来从存储键值对的表中选择

我需要以键值对的形式在数据库(mySQL)中存储一些项目及其属性。我正计划如下。

我将使用两个表itemsitem_properties

items

itemId | 项目名称

-------------------

1923年| 交流电

1235 | 冰箱

8273 | 电暖器

item_properties

itemId | 物业| 值

--------------------------------

1923年| 效果| 冷却

1923年| 消费 有效率的

1923年| 类型 分裂

1235 | 效果| 冷却

1235 | 数量 20升

8273 | 效果| 加热

8273 | 消费 有效率的

8273 | heatMethod | 线圈

现在,如果我必须选择“效果”为“冷却”的项目,则可以使用以下查询进行操作(结果将为我提供“ AC”和“冰箱”)。

从项目i,item_properties p中选择itemName 

在哪里i.itemId = p.itemId

AND(p.property ='effect'AND p.value ='cooling');

我想知道如何编写查询以选择与多个属性匹配的项目,例如

  • 选择“效果”为“冷却”且“消耗”为“有效”的所有项目(与“ AC”项目匹配)。
  • 选择所有“类型”为“ split”或“ heatMethod”为“ coil”或“ consumption”为“ effecient”的物品(将与“ AC”和“ Heater”物品匹配)。

请帮助…预先感谢!

回答:

这是查询示例:

SELECT

itemName

FROM

items i,

JOIN

item_properties effect

ON i.itemId = effect.itemId AND effect.property = 'effect'

JOIN

item_properties consumption

ON i.itemId = consumption.itemId AND consumption.property = 'consumption'

WHERE effect.value = 'cooling' AND consumption.value = 'efficient';

我将把oR查询留给您自己尝试的东西。它只是增加更多的表格和使用OR,而不是ANDWHERE

以上是 需要一个MySQL查询来从存储键值对的表中选择 的全部内容, 来源链接: utcz.com/qa/416069.html

回到顶部