從表X
你想三套記錄的每一個都是從同一個表X
- 選擇X1過濾表X中的記錄,其中a ='stuff'和b ='junk'
- X2過濾表X中的記錄,其中a ='arg'和b ='blarg'
- X3濾波器在表X,其中a =「NARF」和b =「富」
到現在爲止,我們有屬於X的獨立子集三「邏輯視圖」的記載,分別稱爲X1,X2 ,X3
加入(...),其中X1.c = X2.c = X3.c
解釋可能有點含糊,混亂,讓我們嘗試:
字面上: c是表中的一個字段的名稱X
- 情況A:c是一個鍵(唯一約束的),則每個X(因而X1,X2,X3)的記錄對C有唯一值,因此不存在X1.c = X2.c = X3.c的任何記錄;在這種情況下的解決方案就像==> SELECT 0
- case B:c不是鍵,而是可能包含重複值的字段;我們可以將這個案例分成兩個(或更多)可能的解釋
- 案例B1:我們只想考慮和計算那些X1.c = X2.c = X3.c的記錄;這包括來自子集X1,X2,X3的那些只有c值存在於所有其他子集中的記錄。
- 情況B2:我們要計算X1.c,X2.c,X3的所有可能的組合。ç
所有這些情況下顯得特別奇怪,所以我提前另一種解釋,最常見的情況,但不是字面上秉承的理念加入:
我們要算X1,X2的工會,X3;
在這種情況下,解決辦法是:
SELECT COUNT(*) FROM X
WHERE (a='stuff'AND b='junk')
OR (a='arg' AND b='blarg')
OR (a='narf' AND b='foo')
警告:我perfecly瞭解到,「聯盟」是絕對不同的是「聯接」,因此這種解釋可能是完全以錯的,如果你真的意味着加盟,但探索這種含義的可能性似乎很有用。
*這個結果* - 結果是什麼? – RedFilter
你想要表中所有項目的結果是a ='stuff'還是b ='junk'OR a ='arg'和b ='blarg'OR a ='narf'和b ='foo'?或者你只是在尋找只有三種物品? – jTC
請提供樣本數據和結果。你的僞代碼可能不會捕獲你真正想要的東西。 –