2012-04-09 2 views
4

두 개의 테이블이 있습니다. 다음은 간단한 분류입니다.mysql - 하위 쿼리에서 첫 번째 결과를 얻으려면 어떻게해야합니까?

Table #1 - Album: 
Rows: 
albumId | title | userId 

Table #2 - Photo: 
Rows: 
photoId | src | albumId 

각 앨범에서 첫 번째 사진의 src를 가져오고 싶습니다. 사용자로부터 사진을 모두 반환

SELECT pa.id, pa.title, p.src 
FROM Album pa 
LEFT JOIN Photo p ON pa.Id = p.albumId 
WHERE pa.userId = 1 

:이 어떻게 여기를 찾고 있지만하고있어 내가 무엇을 꽤 명확하지 않다. 그 결과에있는 각 앨범의 첫 번째 결과를 원합니다.

+0

앨범의 표지를 검색하려면 'cover_photo_id'와 같이 구분 된 열을 추가하고 명시 적으로 지정해야합니다. – zerkms

+2

"각 앨범의 첫 번째 결과"에서 "첫 번째"를 지정하십시오. –

+1

은 'ORDER'를 사용합니다. 그리고 'LIMIT 1' –

답변

2

나는 @zerkms 말했듯이 당신이하는 cover_photo_id을 추가 할 수 있습니다 생각하지만 트릭을 할 수있는이

SELECT pa.albumId, pa.title, p.src 
FROM Album pa 
LEFT JOIN Photo p 
    ON p.photoId = (SELECT MIN(photoId) FROM Photo WHERE albumId = pa.albumId) 
WHERE pa.userId = 1 
+0

아니요.이 경우 한 행만 반환됩니다. – zerkms

+0

방금 ​​편집 했으므로, 그것을 확인해주세요. – g3rv4

+2

당신은 그 조건을'ON' 부분에 넣는 것이 좋습니다 – zerkms

0
SELECT pa.id, pa.title, p.src 
FROM Album pa 
    LEFT JOIN Photo p ON pa.Id = p.albumId 
WHERE pa.userId = 1 LIMIT 1; 
+1

질문을받지 못했습니다 – zerkms

-1

(하위 쿼리를 사용하여 상황에 충분히 효율적입니다 알고하지 않습니다) 당신은 당신이 실제로 FIRST의 등가를 원하는 경우에 참조

SELECT pa.id, pa.title, p.src 
FROM Album pa 
LEFT JOIN Photo p ON pa.Id = p.albumId 
WHERE pa.userId = 1 
GROUP BY pa.id, pa.title 

에 의해 그룹을 사용할 this answer

+0

그리고'p.src' 값을 선택해야합니까? – zerkms

+0

편집 : 방금 첫 번째 집계 함수를 추가했습니다 – pocketfullofcheese

+1

하하, 멋지다. 하지만 그것은 4 월 1 일이 아닙니다 :) –

-2
SELECT pa.id, pa.title, p.src 
FROM Album pa 
LEFT JOIN Photo p ON pa.Id = p.albumId 
WHERE pa.userId = 1 
GROUP BY pa.albumId 
ORDER BY p.photoID 
+0

인 최소 또는 최대'p.src'를 반환 할 것입니다. 집계가 아니거나 그룹 키에있는 필드를 가져올 수 없습니다 ... 할 수 있습니까? – g3rv4

+2

@elgerva : 실제로는 MySQL에서 할 수 있지만 반환 된 데이터 ('p.src'의 경우)는 정의되지 않습니다. 그룹의 임의의 (임의의) 행에있을 수 있습니다. –

+0

네, MySQL에서 할 수 있습니다. MySQL이 동의하지 않아야합니다. 나는 그것이 항상 예상되는 행인지는 모르겠다. 나는 단지 몇 가지 결과를 확인했다. 나에게 일하는 것 같다. –

관련 문제