我有三个数据库表:

products

(

product_id, name etc..

)

specifications

(

id_specification, name

)

product_has_specification

(

id_specification, product_id, specification_value

)

假设我有一件T恤(product_id = 1),大小M的颜色为蓝色,属性更多 .

我已经尝试加入这三个表并且值= m AND value = blue等 . 但它不显示任何结果 .

我也试过像这样的子查询:

select distinct products.* from products

join product_has_specification on products.id = product_has_specification.product_id

join specifications on product_has_specification.spec_id = pecifications.id_specification

where

(

(specifications.name = 'color' and product_has_specification.value='black')

)

and products.id in

(

select products.id from products

left join product_has_specification on products.id = product_has_specification.product_id

left join specifications on product_has_specification.spec_id = specifications.id_specification

where

(specifications.name='size' and product_has_specification.value='s')

)

如果产品的颜色为“黑色”且尺寸为“s”,则此选择有效;但如果我有更多属性,则说X选择将太长 .

选择怎么样?还有其他解决方案吗?

编辑:

我找到了解决方案 . 它很难看,但它能完成这项工作 . 但是,如果一个产品,让我们说10个规格的查询很长 .

SELECT products.*

FROM products

left JOIN product_has_specification ON products.id = product_has_specification.product_id

left JOIN specifications ON product_has_specification.id_specifiction = specifications.id_specification

WHERE products.id in (

SELECT products.id

FROM products

left JOIN product_has_specification ON products.id = product_has_specification.product_id

left JOIN specifications ON product_has_specification.id_specifiction = specifications.id_specification

where (product_has_specification.value = 'm') and products.id in

(

SELECT products.id

FROM products

left JOIN product_has_specification ON products.id = product_has_specification.product_id

left JOIN specifications ON product_has_specification.id_specifiction = specifications.id_specification

where (product_has_specification.value = 'black') and products.id in

(

SELECT products.id

FROM products

left JOIN product_has_specification ON products.id = product_has_specification.product_id

left JOIN specifications ON product_has_specification.id_specifiction = specifications.id_specification

where (product_has_specification.value = 'test')

)

)

)

group by products.id

使此查询适应您想要的任意数量的规范 . 如果有人有更好的解决方案,请发布 .

mysql选择产品和功能_mysql - 产品属性选择相关推荐

  1. mysql 以什么结尾查询_MySQL查询选择以某些字符/数字结尾的列值?

    让我们首先创建一个表-mysql> create table DemoTable ( Number int ); 使用插入命令在表中插入一些记录-mysql> insert into De ...

  2. mysql开启数据库审计功能_mysql数据库开启审计功能

    MySQL的审计功能,主要可以记录下对数据库的所有操作,包括登录.连接.对表的增删改查等,便于责任追溯,问题查找,当然一定方面也会影响数据库效率.根据 MySQL 版本的不同有两种分为企业版和社区版: ...

  3. mysql临时关闭索引功能_MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  4. mysql字符串拆分split功能_mysql字符串拆分实现split功能

    转自:https://blog.csdn.net/pjymyself/article/details/81668157 有分隔符的字符串拆分 [0]需求 数据库中 num字段值为: 实现的效果:需要将 ...

  5. mysql访问类型最好的_【干货满满】最全的MySQL性能指南(一):选择最佳的数据类型...

    对于 MySQL 数据库来说,好的逻辑表和物理表的规划至关重要,我们需要根据查询语句来针对性地设计 Schema ,没有万能好用的 Schema.一个 denormalized 的 schema 可以 ...

  6. 选择产品套餐自动生成报价小程序开发制作

    选择产品套餐自动生成报价小程序开发制作 按照客户需求选择广告服务套餐自动生成报价小程序开发制作具体的功能: 1.选择套餐后,显示固定内容供选择: 2.产品的选择上有金额限制和部分服务多选少的限制,需要 ...

  7. 连锁管理系统有哪些功能?如何选择实用的连锁管理系统?

    传统门店管理系统有很多弊端,各种销售数据不能实时同步.沟通效率低.分店管理困难,库存混乱...... 一套合适的连锁管理系统,能够有效解决多门店之间的管理沟通难题,总店可以随时随地使用手机掌控分店各种 ...

  8. c盘扩展卷功能只能向右扩展_信用风险管理:功能扩展和选择

    c盘扩展卷功能只能向右扩展 Following feature engineering, this part moves to the next step in the data preparatio ...

  9. antd vue 多个下拉 联动_Antd下拉选择,自动匹配功能的实现

    我就废话不多说了,大家还是直接看代码吧~ placeholder="客户名称" showSearch optionFilterProp="children"// ...

最新文章

  1. 这位挺身而出的研究生,被直接录用!
  2. golang 数组与切片
  3. 【CTF大赛】第五届XMan选拔赛 ezCM Writeup
  4. BADI 修改采购订单的shipping point示例
  5. java父类shape_java父类为抽象类,子类构造方法传参
  6. 面向对象的数据存储方式
  7. AMD规范(RequireJS)、CMD规范(SeaJS)、CommonJS(BravoJS)规范的辨析
  8. mdk cubemx 移植RT-Thread Nano 至stm32f424zgt6
  9. map.addoverlay php,覆盖物 - 百度地图开发文档 - php中文网手册
  10. Jenkins的系统设置
  11. 最新全国行政区划,省市区县乡镇四级json数据
  12. 5g局域网传输速度_4G5G和上网带宽与下载速度的换算方法
  13. 西门子200系列PLC通信编程指令讲解
  14. keyshot手机渲染教程_keyshot渲染教程
  15. 蓝桥杯-算法训练 印章
  16. c语言 simon 游戏,终于发现少儿英语游戏SimonSays(西蒙说)
  17. 自定义形状seekbar学习
  18. 写了个手机生成幻影坦克的APP——幻影坦克工厂
  19. Linux搭建SVN Server
  20. 【考研408】计算机与组成原理笔记

热门文章

  1. 饿了么element UIel-dialog弹出层/el-dialog修改默认样式不能在style scoped修改
  2. eclipse/myeclipse添加插件3种方式
  3. NEERC 2012
  4. 计算机流水线作业员做什么,电子厂普通作业员的工作流程是什么
  5. linux看配置命令,Linux下命令行查看系统配置
  6. Python+turtle交互式绘图:可以用鼠标拖动的小海龟
  7. Python使用BoundedSemaphore对象进行线程同步
  8. 详解Python中的各种数字类型
  9. redis日志_面试题之Redis如何保证系统宕机数据不会丢失?
  10. java输入a控制台打印1_Java—— 流(Stream)、文件(File)和IO