私はこのようなことを行う方法がわからない3つのテーブルを結合する際に助けが必要な状況を説明するこの図を持っています:
したがって、次のようにして、レコードを取得する while ループを実行できます。
<img src="<?php echo $row['filename']; ?>" alt="" />
Album: <?php echo $row['album_name']; ?>
AlbumID: <?php echo $row['album_id']; ?>
INNER JOINを使用すると、画像のないアルバムが返されなくなります。ORDER BY ... DESCは結果を降順でソートしますが、最後のレコードのみを返す方法がわかりません。おそらく、 ORDER BY 、 GROUP BY、およびTOPの何らかの組み合わせが必要になるでしょう。
SELECT
album_table.album_id,
album_table.album_name,
images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
WHERE album_table.user_id = uid
ORDER BY images_table.date DESC
実際、この場合、2 つのテーブルを結合するだけで済みます (一般的な経験則として、結合が少ないほど良い)。
ユーザー ID がわかっているので、アルバム テーブル名から直接クエリを実行できます。
users_table に別の列 "user_name" があり、それを検索したい場合は、users テーブルに結合する必要があります。
SELECT filename, album_name, album_id
FROM album_table at, images_table it
AND at.album_id = it.album_id
AND at.user_id = $user_id
@lolwut: 試してみてください --
SELECT
album_table.album_id, album_table.album_name, images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
INNER JOIN users_table ON users_table.uid = album_table.user_id
WHERE (users_table.uid = ' . $uid . ')
ORDER BY images_table.date DESC
$uid
現在ログインしているユーザーのセッションにする必要があります...または、WHERE
すべてのユーザーの情報を返したい場合は、その句を完全に省略できます。