如何从多个表中选择数据

时间:2013-06-02 20:48:14

标签: php mysql sql database

我目前正在尝试为我的网站制作转发系统,但我遇到的问题是我将posts表与转推表分开,我找不到将它们合并在一起的简单方法。

这些是我的表结构

retweets {
    retweet_id, 
    retweet_post_id, 
    retweet_user_id, 
    retweet_time
}
posts {
    post_id, 
    post_type, 
    post_user_id, 
    post_data, 
    post_private, 
    post_poster_ip, 
    post_time
} 

所以我试图获得这两个表并让它们按最近的顺序排序(所以如果转推是最新的,它会在行中首先显示)。我怎么能这样做?或者将它们全部放在一个表中会更有效吗?

2 个答案:

答案 0 :(得分:0)

您需要使用INNER JOIN,通过适当的外键连接表:

SELECT
    *
FROM
    posts
INNER JOIN
    retweets
ON
    posts.post_id=retweets.retweet_post_id

如有必要,请阅读此处的JOIN:

http://www.w3schools.com/sql/sql_join.asp

  

或者在一个表中完成所有操作会更有效吗?

了解要学习的database normalization,以及如何正确拆分表格。因此,您可以避免anomalies并减少重复信息的数量。

答案 1 :(得分:0)

您可以使用JOIN来合并这些集合(基于匹配retweet_idpost_id),并使用ORDER BY根据retweet_time进行排序

SELECT * 
FROM retweets
JOIN posts 
ON retweets.retweet_id=posts.post_id
ORDER BY retweet_time DESC