2014-09-09 6 views
0

두 테이블에서 선택할 때 내 MySQL 지식은 제한되어 있습니다. 예를 들어이 이러한 열을 포함하므로사용자가 소유자 인 두 테이블에서 mysql을 선택하십시오.

내가해야하는 것은 사용자가 업로드 한 파일의 세부 사항을 가진 하나 개의 테이블은 다음과 같습니다

id, fileId, userId, uploadTime, fileName 
나는 또한 때 파일을 다운로드하는 사람들에 대한 정보를 포함하는 다른 테이블이

하고, 여기에는 다음이 포함

id, userId, fileId, downloadTime 

은 내가해야 할 것은 특정 사용자 파일을 다운로드 한 횟수를 계산입니다,하지만 난 이런 일이 얼마나, 잘 모르겠어요 :

SELECT * FROM downloadTable WHERE fileId IN (SELECT fileId, userId FROM userTable WHERE userId = 5) 

올바른 경로에 있습니까?

+0

일부 샘플 데이터와 예상되는 결과를 추가 할 수 있습니까? – Jens

답변

0

SubQuery는 하나의 필드 만 리턴해야합니다. 귀하의 경우에는 fileId입니다. 당신의 SQL을 변경합니다

SELECT * FROM `downloadTable` 
    WHERE `fileId` IN (
     SELECT `fileId` FROM `userTable` WHERE `userId` = 5 
    ) 

이것은 fileId5으로 userId가 소유 다운로드 한 파일을 선택합니다.

0

당신은이 가입 사용할 수 있습니다

SELECT d.* 
FROM downloadTable d 
INNER JOIN userTable u 
    ON d.userId = u.userId 
WHERE u.userId = 5 

는이 같은 방법으로 두 테이블의 레코드를 연결하는 userId 열이 쿼리에 대해, 그들 모두에서 일관성이 있는지. 그런 다음 userId에 제약 조건을 지정하면 downloadsTable에도 제약 조건이 적용됩니다.

더 빠르게 실행되므로 하위 쿼리보다 좋습니다. 대부분의 경우 JOIN은 쿼리 할 때 데이터를 연결하는 방식입니다.

관련 문제