2016-06-05 2 views
3

두 테이블이 있습니다.다중 행이있는 두 테이블 합치기

Main 
Id Name 
1 abc 
2 efg 

Image 
MainId ImagePath 
1  ..// 
1  ..// 
2  ..// 
1  ..// 
2  ..// 

MainId를 키로 사용하여 단일 행을 얻으려면이 두 테이블을 결합해야합니다. 이미지 테이블의 임의의 이미지와 연결할 수 있습니다.

그러나 현재 내가 가입 할 때 이미지 테이블의 모든 행을 결합하여 표시합니다.

SELECT a.Id,b.ImagePath FROM Main a, Image b WHERE a.Id=b.MainId 

답변

3

것 임의의 이미지를 따기의 또 다른 방법 ....

Select m.ID , I.ImagePath 
FROM Main m 
CROSS APPLY (SELECT TOP 1 ImagePath 
       FROM Image 
       WHERE MainId = m.ID 
       ORDER BY NEWID() 
      ) I(ImagePath) 
1

당신은 상관 관계 쿼리를 사용할 수 있습니다

SELECT t.id, 
     (SELECT s.ImagePath FROM Image s 
     WHERE t.id = s.MainId 
     LIMIT 1) as imagePath 
FROM Main t 

을하거나 포함하는 파생 테이블에 가입 한 imagePathID 당 :

SELECT t.id,s.ImagePath 
FROM Main t 
INNER JOIN(SELECT s.MainId,max(s.ImagePath) as max_im 
      FROM Image s 
      GROUP BY s.MainId) tt 
ON(t.id = tt.max_un) 
+0

이 이미지는 무작위로 선택하지 않습니다. –

+0

사실, "임의의 이미지와 링크 될 수 있습니다"란 임의의 값일 필요는 없다는 것을 의미합니다. 어느 것이 든 상관하지 않습니다. – sagi

+0

정확히 ...... "임의의"<> "MAX"': –