我有了一個屬性表: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