【问题标题】:How do I select data form multiple tables如何从多个表中选择数据
【发布时间】:2013-05-29 00:55:34
【问题描述】:

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

这些是我的表结构

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
} 

所以我试图获取这两个表并让它们按最新排序(因此,如果转推是最新的,它将显示在行中的第一个)。我怎么能这样做?还是在一张桌子内完成所有操作会更有效率?

【问题讨论】:

  • 您在 SQL 查询中使用 JOIN
  • 用一张桌子试一试,一旦你有这个工作,试着用两张桌子做吧

标签: php mysql sql database


【解决方案1】:

您可以使用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

【讨论】:

    【解决方案2】:

    您需要使用 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,减少重复信息量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-05
      • 2022-08-18
      • 2021-02-06
      • 2020-07-04
      • 2016-06-28
      • 2012-05-09
      • 1970-01-01
      相关资源
      最近更新 更多