Мне нужна помощь с запросом из нескольких таблиц.
Моя база данных:
У меня есть следующие таблицы:
1. users (user_id, user_name, ..) //user_name is unique.
2. guestbook_comments(owner_id, comment_author_id, comment ..)
3. profile_photo(profile_photo_id, user_id, path)
Моя проблема:
Я хочу построить следующий запрос:
- У меня есть URL как
guestbook.php?user=sudeep
. Так что я получаю user_name
по $_GET['user'];
user_name
уникальным (в таблице пользователей).
- Я хочу отобразить все записи из
guestbook_comments
для определенного owner_id
(но я знаю только user_name
, поэтому мне нужно будет найти user_id
из users
таблицы).
- Для каждой таблицы
comment_author_id
в guestbook_comments
я хочу получить его user_name
из таблицы users
и path
из таблицы profile_photo
.
Мой подход:
Сначала я присоединяюсь к таблице users и guestbook_comments, чтобы получить все комментарии гостевой книги для определенного user_id. Затем в while loop
я присоединяюсь к users
и profile_photo
таблицам, чтобы получить user_name
и фото path
соответственно.
Я очень сомневаюсь, что мой подход эффективен. Можете ли вы сказать мне, если есть правильный способ сделать это?
$sql = "SELECT u.user_id, g.owner_id, g.comment_author_id
FROM guestbook g
INNER JOIN users u ON u.user_id = g.owner_id
WHERE u.user_name = $user_name";
while($row = mysql_fetch_array( $result )) {
$author_id = $row['comment_author_id'];
$sql = "SELECT u.user_name, p.path
FROM profile_photo p
INNER JOIN users u ON u.user_id = p.user_id
WHERE u.user_id = $author_id;
//display comment text from guestbook, user_name from users, and photo from profile_photo
}