2012-12-20 54 views
0

我正在一个页面上工作,就像Facebook的提要页面。 所以,我的查询现在看起来像:使用IN子句的SQL查询

$sql = "SELECT * 
     FROM event 
     WHERE id_user IN (
       SELECT a.id_user_stalkers 
       FROM stalkers a 
       WHERE a.id_user = ".$id_profile.") 
     ORDER by date DESC 
     LIMIT 0, 10"; 

潜行者 - 朋友

表潜行者:

id id_user id_user_friend 

我需要追加到IN子句我个人的ID,所以我qyery回报我的活动和我的朋友活动。

任何人都可以帮助我吗?

我已经试过

$sql = "SELECT * 
     FROM event 
     WHERE id_user IN (
       SELECT a.id_user_stalkers 
       FROM stalkers a 
       WHERE a.id_user = ".$id_profile.") 
     OR id_user = ".$id_profile." 
     ORDER by date DESC 
     LIMIT 0, 10"; 
+0

当你运行最后一个查询时会发生什么? – MortenSickel

+1

是否有错误或者它不会返回所需的输出? – Marc

+0

我不太明白这个问题,你能否再次尝试解释你的问题。 –

回答

1

它看起来你有id_user_friend并在您的SQL你正在id_user_stalkers什么不对您的SQL和你的表

1,在表格中。

2-我不知道你是否在你的第一张表中有日期,或者你的意思是NOW()。因为你没有分享第一张桌子。

试试这个

$sql = "SELECT * FROM event e WHERE id_user 
      IN (SELECT a.id_user_friend FROM stalkers a 
      WHERE a.id_user = ".$id_profile.") 
      OR e.id_user = ".$id_user." 
      ORDER by e.date DESC LIMIT 0, 10"; 
0

什么是$ id_user?原始查询只有一个变量。我不明白你为什么需要另一个。换句话说,试试这个:

SELECT * 
FROM event e 
WHERE id_user IN (SELECT a.id_user_friend 
        FROM stalkers a 
        WHERE a.id_user = ".$id_profile." 
       ) OR 
    e.id_user = ".$id_profile." 
ORDER by e.date DESC LIMIT 0, 10