我有一个名为users
且有user_id
的表格,以及一个名为groups
且表格group_id
且user_id
is a foreign key
的表users's
来自user_id
$query_groups = mysql_query("SELECT * FROM groups");
while ($rows_g = mysql_fetch_assoc($query_groups)) {
$g_user_id = $rows_g['user_id'];
$query_users = mysql_query("SELECT * FROM users WHERE user_id='$g_user_id'");
while ($rows_u = mysql_fetch_assoc($query_users)) {
echo $rows_u['user_id'];
}
}
的引用。情况如下:如果用户加入了一个组,则将他/她的user_id插入到表组中。因此,如果用户加入了两个不同的组,表'groups'中的列'user_id'将插入两个或多个相同的user_id。好吧,我只想带上user_id一次,要么他/她加入了两个或更多组......
我不知道如何在没有得到相同的user_id的情况下正确循环它....我只想让它循环一次......
{{1}}
答案 0 :(得分:0)
按如下方式更改您的代码:
$query_groups = mysql_query("SELECT user_id FROM groups LEFT JOIN users ON users.user_id = groups.user_id GROUP BY groups.user_id");
while($rows = mysql_fetch_assoc($query_groups))
{
echo $rows['user_id'];
}
答案 1 :(得分:0)
您正在使用$rows_g
,但该变量在第一个while循环中为namend $rows
。
错:
$g_user_id = $rows_g['user_id'];
正确:
$g_user_id = $rows['user_id'];
但是尝试使用连接表,因为这是获取所需数据的低效方法。 在您的情况下,您应该使用LEFT JOIN。