假設我有兩個表 - 人員和衣服,並且這兩個表都具有關聯的鍵/值表,其存儲關於人員和衣物項目的屬性。內部基於完全匹配的所有「鍵/值」對加入兩個表
的接人的版本屬性可能看起來像:
PersonID | AttributeKey | AttributeValue
1 'Age' '20'
1 'Size' 'Large'
2 'Age' '20'
的接服裝的版本屬性可能看起來像:
ClothingID | AttributeKey | AttributeValue
99 'Age' '20'
99 'Color' 'Blue'
60 'Age' '20'
鑑於服裝specifc一塊,我想找到Person條目完全匹配所有的Attributes對。例如,給出ClothingID 60,即使PersonID 1確實具有匹配的AGE,但它具有額外的屬性,我也希望僅獲得PersonID 2。基本上相反也有同樣的效果。
鑑於服裝99我期望沒有結果,因爲沒有人的條目具有顏色屬性。
一個INNER JOIN顯然給了我匹配人的特定屬性的服裝屬性。但是我只想返回所有可能的匹配確實匹配的行,並且如果有額外的匹配則拋出其他行。一個OUTER JOIN會給我匹配NULL的值,但是如果我檢測到這個,並且拋出所有Person行,如果1行有NULLS?
如果你調整你的表,這樣的屬性存儲在他們自己的領域中查詢數據消息更容易。例如。人(PersonID,年齡,大小,姓名等)和衣服(ClothingID,年齡,顏色,類型,說明等) – 2010-03-02 23:41:06