我不是php专家,我找过这样的东西,但什么都找不到(不知道如何搜索,也不知道名字是什么)。
案例:
我有两张单独的桌子:
"朋友":
id | friend_id | foe_id
"更新":
id | user_id
这个代码:
$selectFriends = "SELECT * FROM friends WHERE friend_id = '".$_COOKIE['id']."' OR foe_id = '".$_COOKIE['id']."'";
$queryFriends = mysql_query($selectFriends)or die(mysql_error());
while($listFriends = mysql_fetch_assoc($queryFriends))
{
echo "".$listFriends['friend_id']."";
echo "".$listFriends['foe_id']."";
$selectUpdates = "SELECT * FROM updates WHERE user_id != ".$_COOKIE['id']." AND user_id IN (' . implode(',', ".$listFriends['friend_id'].") . ') ORDER BY date DESC LIMIT 10";
$queryUpdates = mysql_query($selectUpdates)or die(mysql_error());
}
我在第一个查询中得到了我想要的正确id,但现在我想在第二个查询中使用第一个查询的id;选择我的"朋友"的更新。简而言之:链接"friend_id"&"foe_id"到第二个表中的"user_id"。
使用子查询,因为问题不太清楚,我只提供的想法
SELECT * FROM updates WHERE user_id IN (SELECT friend_id FROM friends WHERE friend_id = '".$_COOKIE['id']."' OR foe_id = '".$_COOKIE['id']."'");
否则,您只需要在PHP中做一些事情。取所有friend_id和foe_id记录,在变量($var)中准备一个逗号分隔的字符串。在查询中使用
SELECT * FROM updates WHERE user_id IN ($var);
您可能也喜欢使用GROUP_CONCAT