2011-09-09 2 views
0

내 마음 속의 간단한 쿼리를 만드는 데 어려움이 있습니다.SQL Server - 두 테이블에서 정보 얻기

두 테이블 (tblReviewstblRating)이 있습니다. 이 두 표 모두 venueIduserId입니다.

같은 venueIduserId을 사용하여 리뷰 및 등급을 반환하는 단일 쿼리를 만들고 싶습니다. 이게 가능합니까 아니면 두 개의 쿼리를 사용해야합니까? 사전에

감사

답변

0

당신은

  1. 이 필드를 사용하여 두 테이블을 가입 할 수 있습니다;
  2. .. 또는 (첫 번째 SELECT) UNION (초 선택)
+0

두 가지 방법 모두 시도했습니다. 두 데이터 유형이 같지 않기 때문에 노동 조합은 작동하지 않았습니다. 각 테이블에 항상 데이터가 존재하지 않으므로 조인이 작동하지 않습니다. – twsJames

+0

그런 다음 교차 결합을 사용하십시오. – Gedrox

0
SELECT * 
FROM tblReviews AS rev INNER JOIN 
    tblRating AS rat ON rev.venueid = rat.venueid AND rev.userid = rat.userid 

이 쿼리는 각 테이블에서 매칭되는 열을 반환한다. 첫 번째, 두 번째 또는 두 표의 모든 레코드를 원할 경우 외부 조인 (LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN)을 사용할 수 있습니다.

5
SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId; 

특정 사용자에 대한 모든 원하는 경우 :

SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId 
    WHERE (Rev.UserId = @UserId OR Rat.UserId = @UserId); 

당신이 원하는 경우 특정 장소에 대한 모든 :

SELECT Rev.column_name, Rat.column_name 
    FROM dbo.tblReview AS Rev 
    FULL OUTER JOIN dbo.tblRating AS Rat 
    ON Rev.VenueId = Rat.VenueId 
    AND Rev.UserId = Rat.UserId 
    WHERE (Rev.VenueId = @VenueId OR Rat.VenueId = @VenueId); 
+0

또한 venueid/userid 조합에 대해 두 테이블에 둘 이상의 레코드가있는 경우 어떻게해야합니까? – JohnFx

+0

바로이 간단한 경우에 두 행을 얻을 수 있습니다. 한면에는 두 행에 동일한 데이터가 있습니다. –

+0

각 테이블에 하나의 레코드 만있을 것이며 두 테이블 모두 결과가 있더라도 결과를 가져오고 싶습니다. 두 테이블에 결과가 없거나 테이블 중 하나에 결과가 있습니다. – twsJames

0

당신이 요청하는 경우 모르는 .
시도 :

SELECT re.venueId, re.userId, re.review, ra.rating 
FROM tblReviews re INNER JOIN tblRating ra 
ON re.venueId = ra.venueId AND re.userId = ra.userId 
관련 문제