Объединение трех трех таблиц

У меня есть эта диаграмма, которая должна объяснить мою ситуацию. Мне нужна помощь в объединении трех таблиц, которые я понятия не имею, как это сделать:

введите описание изображения здесь

Поэтому я могу пройти через цикл получения записей, выполнив следующие действия:

<img src="<?php echo $row['filename']; ?>" alt="" /> Album: <?php echo $row['album_name']; ?> AlbumID: <?php echo $row['album_id']; ?> 

Solutions Collecting From Web of "Объединение трех трех таблиц"

Использование 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 

Я считаю, что INNER JOIN – это то, что вы ищете

Этот сайт дает хороший пример

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

@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 полностью, если хотите вернуть всю информацию о пользователях.

На самом деле, в этом случае вам нужно только присоединиться к двум таблицам (как общее правило, чем меньше вы присоединяетесь, тем лучше).

Поскольку вы знаете идентификатор пользователя, вы можете запросить его непосредственно из имени таблицы альбомов.

Если в вашей учетной записи users_table появился другой столбец «имя_пользователя», и вы хотели его искать, вам нужно будет присоединиться к таблице пользователей.

 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