我有兩個表,tblPerson和tblOffer。人員表具有關於他們目前擁有哪些產品的詳細信息。優惠有多個標準,以確定我們是否應該建議某人獲得新產品。如何連接可變數量條件匹配的表
我想加入這些基於tblOffer中的多個標準,但在確保所有選定的標準被判斷,而不是隻是其中任何一個。例如下面是我的表中的一些字段。
tblPerson
pkPersonId
HasCreditCard
HasEmail
HasLoan
tblOffer
pkOfferId
NeedsCreditCard
NeedsEmail
NeedsLoan
樣本數據:
tblPerson
1, 0, 0, 1
2, 0, 1, 0
3, 0, 0, 0
tblOffer
100, 1, 0, 1
200, 0, 0, 1
300, 1, 1, 0
我試圖返回結果爲其中包含300優惠1人,2人獲得提供100和200,以及3人獲得擁有100,200,和300
我曾嘗試跨兩個表之間的應用,然後用我的WHERE子句說:
SELECT * FROM tblPerson prs
CROSS JOIN tblMrmOffer ofr
WHERE prs.pkPersonId = @PersonId AND (
(prs.HasEmail = 0 AND ofr.NeedsEmail = 1) OR
(prs.HasCreditCard = 0 AND ofr.NeedsCreditCard = 1) OR
(prs.HasLoan = 0 AND ofr.NeedsLoan = 1))
如果任何選定的條件都爲真,但不限於設置了所有選定條件的行,則這會給我一行。例如,如果該人需要信用卡或電子郵件,則提供300將匹配,但不一定如果兩者都需要。我正在嘗試將此作爲交叉表樞軸解決,但不清楚如何加入此選項。任何幫助,將不勝感激。
*例如,如果個人需要信用卡或電子郵件,但不一定需要這兩個要素,則要約300將匹配*:您的意思是什麼?優惠300可以匹配您數據中的所有三個人。你可以請發佈所需的結果集? – Quassnoi