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

标签 mysql subquery

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

项目

  • 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/

相关文章:

mysql - 使用子查询更新永远不会完成

mysql - 选择值 AS (desc) 在子查询中不起作用

php - 存储、递增和重用索引的正确方法是什么

mysql - 将两行中的字符串合并到新列中

java - MySQL结果集到java数组

mysql - 理解 MySQL Workbench EER 图中的箭头提示

mysql - 如何在 MySQL 中使用 subselect 获取所有唯一名称及其计数?

php - 在 url 中获取产品名称而不是 id php

jpa - Querydsl Many2many join

PostgreSQL DELETE FROM (SELECT * FROM table FETCH FIRST 10 ROWS ONLY)