好吧,我會採取刺傷它在我理解的問題的希望,但更可能會提供一個基礎,以幫助澄清。
注意:我假定USER_ACCOUNT.Character1是例如對USER_CHARACTER中的某個FK。它應該是。
一些方法讓你開始。
首先一些示例數據:
CREATE TABLE USER_ACCOUNT (AccountID INT, Character1 INT,Character2 INT,Character3 INT)
CREATE TABLE USER_CHARACTER (CharacterID INT, SpecialPoints INT)
GO
INSERT INTO USER_ACCOUNT VALUES (1,10,20,30),(2,40,50,60)
INSERT INTO USER_CHARACTER VALUES (10,10000),(20,20000),(30,30000),(40,40000),(50,50000),(60,60000)
GO
選項1。將加入多次。
SELECT Character1
,c1.SpecialPoints
,CASE WHEN c1.SpecialPoints > 50000 THEN 1 ELSE 0 END Character1_50000PlusPoints
,Character2
,c2.SpecialPoints
,CASE WHEN c2.SpecialPoints > 50000 THEN 1 ELSE 0 END Character2_50000PlusPoints
,Character3
,c3.SpecialPoints
,CASE WHEN c2.SpecialPoints > 50000 THEN 1 ELSE 0 END Character3_50000PlusPoints
FROM USER_ACCOUNT a
LEFT JOIN USER_CHARACTER c1 ON a.Character1 = c1.CharacterID
LEFT JOIN USER_CHARACTER c2 ON a.Character2 = c2.CharacterID
LEFT JOIN USER_CHARACTER c3 ON a.Character3 = c3.CharacterID
GO
選項2將使用UNION
您使用
WITH cte AS (
SELECT AccountID
,CharacterID
,SpecialPoints
FROM USER_ACCOUNT a
INNER JOIN
USER_CHARACTER b ON a.Character1 = b.CharacterID
UNION ALL
SELECT AccountID
,CharacterID
,SpecialPoints
FROM USER_ACCOUNT a
INNER JOIN
USER_CHARACTER b ON a.Character2 = b.CharacterID
UNION ALL
SELECT AccountID
,CharacterID
,SpecialPoints
FROM USER_ACCOUNT a
INNER JOIN
USER_CHARACTER b ON a.Character3 = b.CharacterID
)
SELECT *
FROM cte
WHERE SpecialPoints > 50000
什麼SQL方言? MySQL的? MSSQL? PostgreSQL的? – Oldskool
MSSQL SERVER 2005 – user3468696
你的問題不清楚。請添加一個包含一些數據的示例,以清晰地表達您的意思 –