【问题标题】:mysql select data from two tables and different structuremysql从两个表和不同的结构中选择数据
【发布时间】:2011-02-17 18:30:01
【问题描述】:

您好,我正在使用 php/mysql 建立一种议程/网站。 此议程包含按日期排序的公共事件和用户的个人笔记。 我需要从数据库中的 EVENTS TABLE 中加载所有事件,并从 NOTES TABLE 中加载注释。 但是这两个表的结构完全不同,它们只有一个相同的字段:DATETIME。

那么我怎样才能按日期对公共事件和个人笔记进行排序呢?

请帮帮我! =) 谢谢卢卡

【问题讨论】:

    标签: php mysql select structure


    【解决方案1】:

    根据 OP cmets 改进 Don 的答案,您可以添加一列以了解该行所在的表。

    SELECT  'events' As Tbl,
            datetime,
            location,
            organizer,
            NULL as notes
    FROM    events
    UNION
    ALL
    SELECT  'user_notes' As Tbl,
            datetime,
            NULL,
            NULL,
            notes
    FROM    user_notes
    ORDER
    BY      datetime DESC
    

    【讨论】:

      【解决方案2】:

      UNION ALL 用于两个查询。每个表的查询将只有 NULL 在另一个表的所有列中。例如:

      SELECT  'event' as type,
              datetime,
              location,
              organizer,
              NULL as notes
      FROM    events
      UNION
      ALL
      SELECT  'user_note',
              datetime,
              NULL,
              NULL,
              notes
      FROM    user_notes
      ORDER
      BY      datetime DESC
      

      类型字段可以是字符串也可以是整数,以便于区分该行来自哪个表。

      【讨论】:

      • 谢谢!但是我怎么知道我回显的行是来自 user_notes 还是来自事件(因为我也需要设置不同的样式)?有一些比保留例如 NULL 字段更优雅的东西,所以当 $row['0']==NULL 我知道它属于特定表时? =)
      • 正如@The Scrum Meister 建议的那样,您可以添加一个额外的字段来区分一个表。我已经更新了我的答案。
      猜你喜欢
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      相关资源
      最近更新 更多