将两个(或更多)SQL结果与PHP动态组合?

时间:2011-05-25 16:21:59

标签: php sql

我经历了几个类似的问题,似乎都没有解决这类问题。

我想选择来自朋友的所有帖子,然后组织它们。到目前为止我尝试过的所有方法都是朋友一起做的,这很烦人,因为它没有向你展示最新的帖子。

以下是我的数据库的结构,我遗漏了任何不相关的细节:

用户表:

 UId (Unique UserId)

朋友表:

 Person1 | Person2

帖子表:

 PostId | AuthorId | Text | DatePosted

AuthorId,Person1和Person2都通过“UId”链接到用户。

2 个答案:

答案 0 :(得分:3)

如果不知道如何构建数据库,这是一个难以回答的问题。

过去,我做过类似的事情(单一查询),但我的数据库结构非常专门用于此目的。

 SELECT * from posts
 LEFT JOIN users ON (poster_id=user_id)
 WHERE poster_id IN (
     SELECT related_id
     FROM user_relationships
     WHERE user_relationship = 'friend'
     AND user_id = 1
 )
 ORDER BY post_date DESC
 LIMIT 20   

已添加 - 现在不在MySQL的前面,但对于OP指定的DB,它可能看起来更像是这样:

 SELECT * from posts
 LEFT JOIN users ON (poster_id=user_id)
 WHERE poster_id IN (
     SELECT (if(user_idA='.$userId.'), user_idB, user_idA) as related_id,
     FROM user_relationships
     WHERE accepted = TRUE
     AND '.$userId.' IN (user_idA, user_idB)
 )
 ORDER BY post_date DESC
 LIMIT 20   

答案 1 :(得分:1)

这样的事情会起作用:

SELECT p.*
FROM Posts p
  JOIN FriendRequests fr
    ON fr.from = p.authorid
WHERE fr.accepted = 1
  AND fr.to =  @myid
ORDER BY p.postdate DESC