我有三个表、项目、值和属性,以及它们的结构......
项目
- ID
- 标题
- 描述
- 时间戳
值(value)观
- ID
- 值(value)
- 商品ID
- propID
属性
- 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)即可
关于mysql - 停留在如何执行特定查询上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865131/