
[英]Laravel get all groups along with the count of each groups group members using join query
[英]Get Join To Recognize Only Registered Groups?
我正在尝试选择在成员表中指定的用户已注册的组,并在用户所属的所有组的一页上显示更新,但是每次它不断显示来自每个组的更新时创建,即使他们不是成员。 因此,如何确保仅显示用户加入这些更新的组?
到目前为止,这是我的查询:
$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
在选择中,您正在使用LEFT JOIN。 因此,选择了所有组。
您必须改为使用INNER JOIN。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.