屬性我有兩個表看起來像這樣:獲得匹配的兩個表中
A B
id_attr value id id_attr value
-------------- -------------------
1 a 1 2 b
2 b 1 3 c
3 c 2 2 b
4 NULL 2 4 d
2 5 e
3 1 aaa
3 3 c
表A是我的參考表,我在表B(每組條目用相同的ID cosists多個條目類似於表A的結構的(id_attr,value)對。目標是檢查表A中的條目是否與表B中的任何條目匹配(一個或多個)。當表B中存在的每個屬性與一個ID中的相似屬性匹配時,一個條目與另一個條目匹配。另外,在表A中,值可以爲NULL,但在表B中不可以。
在上面的例子中,我的查詢應該返回「1」,因爲只有ID爲1的條目完全匹配表A中的相似條目.Id 2不匹配,因爲在表中屬性4的值爲NULL,它有一個在表A中不存在的屬性。即使屬性3相似,但是屬性1不匹配,Id 3也不匹配。
正如你所看到的,實現了不匹配現有的表A中的條目中的每一個應該被匹配,但如果在表B中存在的屬性然後將其值必須匹配表A similiar值
在Oracle查詢中實現此結果的最有效方法是什麼?
每一個幫助將不勝感激。如果我沒有足夠清楚地表達我的意見,我可以爲更多的問題提供答案。
從你的匹配規則的描述,這聽起來好像對例如數據的查詢應返回2和3,因爲表B中每個id_attr的所有值都與表A中的值相同。您聲明查詢應該返回1 - 您能澄清嗎? – 2012-02-08 13:52:45
它應該返回1,因爲它匹配由多個屬性組成的條目,並且只有ID爲1的條目具有與表A中的值相匹配的值的每個屬性。 – Ziouas 2012-02-08 14:06:33
當您說「它匹配由多個屬性組成的條目」時,是否表示所有B中的條目由A中的單個字母組成,重複多次?如果是這樣,A中的值是否會長於單個字母? – 2012-02-08 14:13:52