6

2つのテーブルがあります。簡単な内訳は次のとおりです。

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

これにより、ユーザーからのすべての写真が返されます。それらの結果の各アルバムの最初の結果をお願いします。

4

4 に答える 4

3

@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
于 2012-04-09T23:47:37.430 に答える
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;
于 2012-04-09T23:48:19.440 に答える
-1

GROUP BYを使いたい

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

実際にFIRSTに相当するものが必要な場合は、この回答を参照してください

于 2012-04-09T23:49:34.760 に答える
-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
于 2012-04-10T00:01:37.870 に答える