2017-11-02 2 views
0

나는 Stackoverflow의 사용자 행동을 분석하는 프로젝트에서 작업하고 있으며 사용자가 좋아하는 것을 얻는 데 필요한 데이터 중 하나 인 stackoverflow에서 데이터를 가져와야합니다. stackexchange 데이터베이스에서 titles를 (를) 게시합니다. 지금, 나는 단지 다음과 같은 사용자의 마음에 드는 정보를 얻는 방법을 알아 냈 : StackExchange 데이터베이스에서 사용자가 가장 좋아하는 게시물 제목을 얻는 방법

select VT.name, U.DisplayName 
from VoteTypes VT, Votes V, Users U 
where VT.Id = 5 and 
      VT.Id = V.VoteTypeId and 
      U.Id = V.UserId and 
      U.Id = '85597' 

나는 다음 단계는 사용자가 투표 한 게시물을 찾을 생각, 다음 사용자 ID와 일치합니다. 그러나 그것이 올바른 단계인지는 모르겠습니다. 그리고 사용자의 투표와 문제 사이의 연결이 테이블 이름 사이에 쉼표를 사용하여

+0

아무도 쉼표로 구분 된 테이블을 사용하여 더 이상 참여하지 않아야합니다. 명시 적 조인 구문이 공식화 된 후 25 년이 경과했습니다. 변경할 시간. –

+0

@Used_By_ 이미 변경된 사항은 무엇입니까? 나는 데이터베이스 과정을 지금 당연히하고 있으며, 이런 식으로 사용하도록 가르쳐주었습니다. –

답변

0
SELECT 
     vt.name 
    , u.DisplayName 
FROM VoteTypes vt 
    , Votes v  <<<<<<<<< not good 
    , Users u  <<<<<<<<< not good 
WHERE vt.Id = 5 
AND vt.Id = v.VoteTypeId <<<<<<<<< join predicate (vt = v) 
AND u.Id = v.UserId  <<<<<<<<< join predicate (u = v) 
AND u.Id = '85597 

그냥 STOP 간단한 단계 .'That 더 신중하게 조인을 고려하도록 강제를 게시 찾을 수 없습니다.

ON 후에 참조 할 테이블에 조인 조건자를 이동하십시오. (다른 조건은 동일 테이블 등의 조작자의 양측에 가입 참조.)이 적절한 유형 정돈해서 합류로

SELECT 
     vt.name 
    , u.DisplayName 
FROM VoteTypes vt 
    , Votes v ON vt.Id = v.VoteTypeId 
    , Users u ON u.Id = v.UserId 
WHERE vt.Id = 5 
AND 
AND 
AND u.Id = '85597' 

그 쉼표 무서워 바꾸기.

SELECT 
     vt.name 
    , u.DisplayName 
FROM VoteTypes vt 
INNER JOIN Votes v ON vt.Id = v.VoteTypeId 
INNER JOIN Users u ON u.Id = v.UserId 
WHERE vt.Id = 5 
AND u.Id = '85597' 

완료.

코스에서 이전 구문을 사용하는 경우; 더 나은 코스를 얻는 것을 고려하십시오.

+0

고마워요! 당신이 그 내용을 도와 줄 수 있는지 궁금합니다. –

+0

질문이 지금 해결 되었습니까? 이 답변에 대해 질문이 있습니까? [help/accepting] (https://stackoverflow.com/help/someone-answers)에 대한 자세한 내용은 "[** 클릭 **] (https://ibb.co/ikqyO6)"대답을 수락하려면 –

관련 문제