我有2個表,我需要得到的數據...我的用戶表看起來像這樣:SQL自聯接問題
Users Table
-------------
UserID
FirstName
LastName
WebLogin
WebPassword
Active
UserAlternates Table
---------------------
UserAlternateID
UserID
AlternateUserID
Users Table Data
------------------
1, John, Brown, jbrown, jbrown, true
2, Mark, Smith, msmith, msmith, true
3, Tim, Stone, tstone, tstone, true
UsersAlternate Table Data
--------------------------
1, 1, 2
2, 1, 3
3, 2, 1
4, 3, 2
5, 3, 1
的用戶名是指返回到用戶表,因此用戶ID執行AlternateUserID。這是我們的程序可以讓用戶對其他用戶「交替」的情況。因此,在上面的例子中,如果約翰布朗將Mark添加爲替代項,並且Mark將John替換爲替代項,而時間將以Mark和John替代。我在如何編寫SQL以顯示給定用戶標識的備用用戶方面留下了一片空白。所以,如果我在用戶名= 1後,它會返回:
2, Mark, Smith
3, Tim, Stone
我試過,但它返回兩行相同的用戶數據(在這種情況下,2約翰·布朗的):
CREATE PROCEDURE [dbo].[GetUserAlternates]
@UserID int
AS
SELECT u.FirstName, u.LastName, ua.AlternateUserID
FROM Users u
INNER JOIN UserAlternates ua ON u.UserID = ua.AlternateUserID
WHERE u.UserID = @UserID
有任何想法嗎?
您需要再次加入到用戶表。 – 2012-02-14 04:41:10
@John選擇你爲什麼需要加入兩次用戶?用戶表中包含的關於不在useralternates表中的userid 1的信息是什麼? – 2012-02-14 04:46:29
我想我錯了。 – 2012-02-14 04:48:05