【问题标题】:Select query based on values from other query根据来自其他查询的值选择查询
【发布时间】:2015-05-28 07:50:19
【问题描述】:

我不是 php 专家,我正在寻找类似的东西,但找不到任何东西(不知道如何搜索,也不知道它的名字是什么)。

案例:

我有两个单独的表:

“朋友”:

标识 |朋友ID | foe_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”。

【问题讨论】:

  • 那么 $queryUpdates 当前返回给您的是什么?

标签: php mysql arrays select


【解决方案1】:

使用子查询,因为问题不是很清楚,我只提供想法

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

【讨论】:

  • 这可能行得通,除非 user_id 必须与friend_id 或 foe_id 匹配
猜你喜欢
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 2015-11-25
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多