我有了一个属性表:SQL获取父行,如果子行匹配多个条件
parent_record_id
(物业所属的记录),
property_type_id
(什么是属性的名称)和
property_value
该属性。
现在我有一个叫做DATE
的property_type
和另一个叫做PRICE
的property_type
。当我想以搜索有
PRICE = 50$ OR DATE = 2016-10-02
它与预期相符的记录。然而,客户需要能够检索具有PRICE = 50$
并且也已经在DATE = 2016-10-02
上出售的记录。因此,在本质上我必须得到记录,如果他们的两个孩子的满足或者
(property_type = PRICE AND property_value = 50$) OR (property_type = DATE AND property_value = 2016-10-02)
我想简单的方法是只执行的SQL查询,然后GROUP
记录,并检查是否性能SUM
= 2
。 (0)
我在遍历网络空间时发现,杀死谚语龙的另一种方法是两次(在本例的上下文中)加入属性表,每次分配不同的别名,然后执行两个查询这些别名表。 (1)结果让我很高兴。
(0)解决方案看起来很浪费,因为它会继续检查行是否满足条件,即使其中一个条件已被证明是错误的(因为每个记录可能有多达20个这些属性/值对桌子将是巨大的)。
更新:现在我已经考虑过更多(1)可能会有相同的缺点,并检查同一行两次。 (1)的情况如何(012)?有没有其他的可能性来解决这个问题。同样,这些解决方案的性能如何呢?
(是的,我知道以这种方式建模属性,尤其是在表格上,将来会令人头痛,但RDBMS是我必须使用的,并且此解决方案似乎灵活enuf给定当前情况)
显示您的当前查询,或者如果您可以准备sqlfiddel与一些数据和您当前的查询,并只是预期的结果,这将是完美的,并帮助很多,以更好地理解你的情况 – Alex