sql join后多个where条件如何实现

新手上路,请多包涵

我有一个这样的表结构

Products{id, name}
ProductProperties{id, product_id, property, value}

示例数据如下

Products
id      name
1       p1
2       p2

ProductProperties
id   product_id  property value
1    1           brand    nike
2    1           model    xl
3    1           brand    nike
4    1           model    xl

现在我想要查询,而且

阅读 8.9k
1 个回答

直观的sql语句:

select * from ProductProperties pp
where (pp.property = 'brand' and pp.value = 'nike')
or (pp.property = 'model' and pp.value = 'xl')

PS:你觉得你这个数据表的结构设计的合理吗?我怎么感觉看着很别扭。如果数据量大的话,对于多个product有可能property和value会大量重复,这会造成大量的冗余数据。对于property不多的话(实际的情况一般也不会太多),可以考虑将每个property作为列,如下:

ProductProperties{id, product_id, brand, model}

或者对于property=value这样的键值对比较有限的话,可以考虑索性单独出来一个数据量有限的产品属性表,然后产品表做关联:

ProductProperties{id, brand, model}
Products{id, name, propertyIdList}

PS之PS:这种可变的属性列,不正是NOSQL数据库的用武之地吗,mongodb正好可以大显身手哎!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进