2013-03-23 52 views
0

我想獲取會員及其照片。每個成員有2張照片。 (我不是在談論個人資料圖片)如何通過子查詢獲取多列?

有2個表名爲會員和會員照片。

這裏是我的查詢不工作(果然):

SELECT 
M.Name as MemberName, 
M.LastName as MemberLastName, 

(
    SELECT 
     TOP 1 
     MP.PhotoName 
    FROM 
     MemberPhotos MP 
    WHERE 
     MP.MemberID = M.ID 
     AND 
     MP.IsFirst = 1 
) as MemberFirstPhoto, 

(
    SELECT 
     TOP 1 
     MP.PhotoName 
    FROM 
     MemberPhotos MP 
    WHERE 
     MP.MemberID = M.ID 
     AND 
     MP.IsFirst = 0 
) as MemberSecondPhoto, 

FROM 
    Members M 

也許有人會說,我應該用內連接,而不是,我不希望使用內部連接,如果我用它我得到的數據多個像:

Name  Surname  PhotoName 

Bill  Gates   bill.png 
Bill  Gates   bill2.png 
Steve  Jobs   steve.jpg 
Steve  Jobs   steve2.jpg 

你推薦我關於查詢?

謝謝。

編輯: 這裏是我想要得到的輸出:

Name  Surname  FirstPhoto  SecondPhoto 

Bill  Gates   bill.png   bill2.png 
Steve  Jobs   steve.jpg  steve2.png 

回答

1

你的榜樣查詢唯一的問題是,你必須經過

as MemberSecondPhoto 

一個額外的逗號如果刪除這工作正常。

SQL Fiddle with demo

然而,而查詢現在的工作,因爲你知道,每個成員只有兩張照片,你可以使用更簡單的查詢:

SELECT 
    M.Name as MemberName, 
    M.LastName as MemberLastName, 
    MPF.PhotoName as MemberFirstPhoto, 
    MPS.PhotoName as MemberSecondPhoto 
FROM Members M 
    LEFT JOIN MemberPhotos MPF ON M.ID = MPF.MemberID AND MPF.IsFirst = 1 
    LEFT JOIN MemberPhotos MPS ON M.ID = MPS.MemberID AND MPS.IsFirst = 0 

SQL Fiddle with demo