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

时间:2015-03-24 20:22:49

标签: php mysql arrays select

我不是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' s;选择我的"朋友"的更新。简而言之:链接" friend_id" &安培; " foe_id"到" user_id"从第二张桌子。

1 个答案:

答案 0 :(得分:0)

使用子查询,因为问题不是那么明确我只提供了这个想法

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