根据其他查询中的值选择查询


Select query based on values from other query

我不是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