mysql - 停留在如何执行特定查询

我有三个表,项目,值和属性,它们的结构....

物品


ID
标题
描述
时间戳记


价值观


ID

itemID
识别码


物产


ID
名称
描述
时间戳记


本质上,使用此结构,我可以创建一个项目,然后为其分配任何属性或值。但是我遇到了一个问题,即如何根据属性和值搜索现有项目。

这样,如果我有一个项目,并且有一个组合键转储到其中,如果它是一个普通表,我可以这样“ SELECT * FROM items WHERE key1 ='val1'AND key2 ='val2'”,但我可以”找出用这种结构如何模拟这样的搜索。还有其他人有什么想法吗?

这是针对我所陷入的系统的,因此更改表的布局可能不会获得我的许可。

编辑:我可以将其分解为多个步骤,但是鉴于这些数据收集的规模,我目前正在寻找的解决方案将很慢并且可能会占用一些内存。

最佳答案

我会使用INNER JOIN查询

SELECT *
FROM Items a
INNER JOIN Values b
ON a.id = b.itemID
INNER JOIN Propeties c
ON b.propID = c.id
WHERE c.title = 'height' AND b.value = '55'


现在,您可以在其中放置任何列表了,它们现在都已加入,只需记住在表名前面加上表别名(a,b,c)