2013-08-20 2 views
2

나는 3 개 테이블을 가지고있다 관련 주석. 까다로운 부분은 올바른 작성자 (사용자)를 표시하기 위해 게시물 및 댓글을 얻는 것 같습니다. 이것은 내가 얻은 것 중 가장 가까운 것이지만 게시물 작성자는 정확하지 않습니다. CFOutput을 "pid"로 묶어서 각 게시물을 한 번만 얻을 수 있습니다.적절한 구문 3 테이블에 대한 SELECT 쿼리

SELECT tblPosts.pid 
     , tblPosts.title 
     , tblPosts.description 
     , tblPosts.price 
     , tblPosts.datecreated AS pdate 
     , tblPosts.image1 
     , tblComments.comment 
     , tblComments.datecreated AS cdate 
     , tblUsers.fname 
     , tblUsers.lname 
FROM tblPosts 
      LEFT JOIN tblComments ON tblPosts.pid = tblComments.pid 
      LEFT JOIN tblUsers ON tblComments.uid = tblUsers.uid 

의견이 있으십니까? 감사합니다.

+1

출력을 pid로 그룹화하려면 쿼리의 order by 절이 필요합니다. –

답변

4

는 저자의 ID를 포함, 당신은 두 번 tblUser에 가입 할 수 있어야합니다. 즉, 테이블 별칭을 사용하여 두 테이블을 구별해야합니다. 이 줄을 따라 뭔가, pa "포스트 작성자"에 대한 별칭이고 ca "코멘트 작성자"에 대한 별칭입니다.

SELECT p.pid 
     , p.title 
     , ... 
     , pa.fname AS PostAuthorFirstName 
     , pa.lname AS PostAuthorLastName 
     , ca.fname AS CommentAuthorFirstName 
     , ca.lname AS CommentAuthorLastName 
FROM tblPosts p 
     LEFT JOIN tblUsers pa ON pa.uid = p.uid 
     LEFT JOIN tblComments c ON p.pid = c.pid 
     LEFT JOIN tblUsers ca ON ca.uid = c.uid 
+2

이것은 완벽하게 작동했으며, 당신의 설명은 내가 다른 시나리오에서 이것을 재현 할 수 있도록 그것이 효과가 있었는지 이해할 수있게 도와주었습니다. 감사! – MikeyJ

+0

Hey Leigh,이 동일한 쿼리에 대한 다른 질문이 있고 여기에 다른 테이블을 추가하는 경우 여기에서 질문하거나 새로운 질문을 시작해야합니까? 고마워! – MikeyJ

+0

@MikeyJ - 새로운 질문을하는 것이 좋습니다. – Leigh

1

나는 테이블의 모든 필드에 익숙하지 않습니다. 게시물을 작성하기위한 특정 사용자를 얻으려면 사용자 테이블에 게시물을 가입하십시오. 이 시도에 대해 어떻게

: 한 번 게시물 한 번 코멘트 : 두 테이블 이후

SELECT p.pid 
     ,p.title 
     ,p.description 
     ,p.price 
     ,p.datecreated AS pdate 
     ,p.image1 
     ,c.comment 
     ,c.datecreated AS cdate 
     ,u1.fname AS CommentAuthorsName 
     ,u1.lname AS CommentAuthorsLastName 
     ,u2.fname AS PostAuthorName 
     ,u2.lname AS PostAuthorLastName 
FROM tblPosts p 
LEFT JOIN tblComments c 
ON p.pid = c.pid 
LEFT JOIN tblUsers u1 
ON c.uid = u1.uid 
LEFT JOIN tblUsers u2 
ON p.uid = u2.uid