4

私はこのようなことを行う方法がわからない3つのテーブルを結合する際に助けが必要な状況を説明するこの図を持っています:

ここに画像の説明を入力

したがって、次のようにして、レコードを取得する while ループを実行できます。

<img src="<?php echo $row['filename']; ?>" alt="" />

Album: <?php echo $row['album_name']; ?> 
AlbumID: <?php echo $row['album_id']; ?>
4

4 に答える 4

6

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
于 2011-03-22T19:41:27.110 に答える
0

INNER JOIN私はあなたが探しているものだと信じています

このサイトは良い例を提供します

http://www.w3schools.com/sql/sql_join_inner.asp

于 2011-03-22T19:30:20.003 に答える
0

実際、この場合、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
于 2011-03-22T19:42:22.143 に答える
0

@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すべてのユーザーの情報を返したい場合は、その句を完全に省略できます。

于 2011-03-22T19:36:56.617 に答える