Я пытаюсь выбрать группы, в которые зарегистрировался пользователь, и которые указаны в таблице участников.
и отображать обновления на одной странице всех групп, членом которых является пользователь, но каждый раз, когда он продолжает отображать обновления из каждой созданной группы, даже если они не являются членами. Так как я могу сделать так, чтобы отображались только группы, к которым присоединился пользователь?
Вот мой запрос до сих пор:
$select_posts_from_groups_query = $db->query("SELECT spud_groups_posts.post_body,spud_groups_posts.group_url,spud_groups_members.member_name
FROM spud_groups_posts LEFT JOIN spud_groups_members ON spud_groups_posts.post_body = spud_groups_members.member_name");while($select_posts_from_groups_array = $db->fetch_array($select_posts_from_groups_query)) {
$group_url_id = $select_posts_from_groups_array['group_url'];
$post_body = $select_posts_from_groups_array['post_body'];
$select_group_data_from_posts_query = $db->query("SELECT * FROM spud_groups WHERE gid='$group_url_id'");
$select_group_data_from_posts_array = $db->fetch_array($select_group_data_from_posts_query);
$group_name_data = $select_group_data_from_posts_array['group_name'];#$group_name_data = false;
echo "<div class='mx'>
<p> <h2> $group_name_data </h2></p>
$post_body</div>
<br>
";
}
Никогда ранее не выполнял SQL-соединения, поэтому.
Прежде всего, хорошей практикой будет использование псевдонимов, чтобы ваш код выглядел намного лучше
SELECT
gr.post_body,
gr.group_url,
mem.member_name
FROM
spud_groups_posts gr
LEFT JOIN spud_groups_members mem ON
gr.post_body = mem.member_name
Этот запрос даст вам все результаты из таблицы spud_groups_posts
и соответствующие результаты из spud_groups_members
,
Вы должны заменить LEFT JOIN на JOIN или INNER JOIN (те же результаты).
Как вы упомянули в комментарии, ваш ResultSet пуст — это означает, что у вас нет соответствующих значений в столбцах post_body
из таблицы spud_groups_posts
с member_name
от
spud_groups_members
В вашем выборе вы используете левое соединение.
Поэтому все группы выбраны.
Вместо этого вы должны использовать INNER JOIN.