如何通过匹配#id并收集所有其他数据来连接多个表?

时间:2011-06-16 15:21:18

标签: php

我有很好的5-7桌。然后我有一个单独的表,每个表内容都有post_id。现在,我想要一个类似于Facebook的用户提要。那么我如何加入Feed表,让我们说照片,文章,视频。

结构:

来自所有其他唯一表的

// content_id = post_id

User Feed Table:

id
content_id
user_id
link

Posts:

id
post_id
post_content
tags
user_id

links:

id
post_id
link_content
tags
user_id

link_comments:
id
post_comment_id
post_id
tags
user_id

3 个答案:

答案 0 :(得分:1)

您必须使用MYSQL JOIN语句。 http://dev.mysql.com/doc/refman/5.1/en/join.html

答案 1 :(得分:1)

你可以使用join,或者你可以说content_id = post_id ...你指定多个表的方式,如果你不知道,就像这样....

从Feed f中选择f。*,发布p,链接l,内容c,其中f.content_id = l.post_id等等。

答案 2 :(得分:1)

我建议在“类型”的Feed表中添加一个额外的字段。这将是内容的类型。每当有人添加新帖子,然后将记录插入到feed表中,并将content_id设置为帖子的id,并且type = 1(1可能意味着发布)。然后你将构建一个这样的查询:

// get all records from feed
// then foreach record
// $type_id = feed->type

// then do a switch statement
switch($type_id){
    case 1:
        $type="articles";
        break;
    case 2:
        $type="videos"; 
}

// then do another query joining the feed to the content
SELECT * FROM '$type'
JOIN feed ON '$type'.id = feed.content_id
WHERE '$type'.id = feed->content_id

//execute query and add to an array of feed items
//endforeach

我很抱歉我的语法错了,这更像是解决问题的答案......