通过属性搜索商品mysql设计

2019-10-24 01:14:29

商品detail表这里写图片描述
包含了商品的id,和扩展字段

商品属性表
这里写图片描述

属性是可以动态扩展的,问题:属性是搜索条件 问:请展示出 材质为塑料 防水为YES,颜色为绿色的商品详细信息,按照sort_filed排序

sql编写:

SELECT
    gd.goods_id,
    gd.sort_filed 
FROM
    (
SELECT
    goods_id 
FROM
    `goods_attr` 
WHERE
    ( attr_name = '材质' AND attr_value = '塑料' ) 
    OR ( attr_name = '颜色' AND attr_value = '绿色' ) 
    OR ( attr_name = '防水' AND attr_value = 'YES' ) 
GROUP BY
    goods_id 
HAVING
    COUNT( goods_id ) = 3 
    ) attr
    LEFT JOIN goods_detail gd ON attr.goods_id = gd.goods_id 
ORDER BY
    gd.sort_filed

继续优化将attr_name 和attr_value设置索引

  • 2019-05-29 14:19:19

    解决Git中fatal: refusing to merge unrelated histories

    Git的报错 在使用Git的过程中有时会出现一些问题,那么在解决了每个问题的时候,都需要去总结记录下来,下次不再犯。 一、fatal: refusing to merge unrelated histories 今天在使用Git创建项目的时候,在两个分支合并的时候,出现了下面的这个错误。

  • 2019-05-29 15:47:51

    撤销commit

    在git push的时候,有时候我们会想办法撤销git commit的内容

  • 2019-06-03 00:07:32

    Android程序Crash时的异常上报

    家都知道,android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉你的程序,表现就是闪退或者程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的,更糟糕的是,当用户发生了crash,开发者却无法得知程序为何crash,即便你想去解决这个crash,但是由于你无法知道用户当时的crash信息,所以你也无能为力。是否真的这样呢,其实android中有处理这类问题的方法,请看下面Thread类中的一个方法#setDefaultUncaughtExceptionHandler

  • 2019-06-04 16:40:30

    为了美观当网页图片不存在时不显示叉叉图片

    当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验。即使使用alt属性给出了”图片XX”的提示信息,也起不了多大作用。