合并来自不同表的两个结果集

时间:2011-05-10 08:42:55

标签: java mysql

我的要求是在一个表中显示一些列,在html表中显示另一个表中的一些列。虽然它具有相同的coloumn id,但值会有所不同。所以,我无法与这两者相提并论。我的查询如下:

      SELECT time_stamp,queryresultset FROM table1 d WHERE dID = 'CP009'
      AND d.time_stamp >'2011-05-01 00:00:00' AND d.time_stamp < '2011-05-01 05:00:00'
      order by time_stamp
      UNION ALL
      SELECT time_stamp,cpuutil FROM table2 h WHERE hID='HS002'
      AND h.time_stamp >'2011-05-01 00:00:00' AND h.time_stamp < '2011-05-01 05:00:00'
      order by time_stamp

所以,我得到的time_stampe对于这两个表都会以毫秒为单位变化。但是,我希望它在一个结果集中。虽然时间值以表格之间的毫秒数变化,但行数将相等。所以,我必须将它带入一个结果集中。我不知道是否有可能在sql查询中处理。或者我可能要尝试java编码?请指导我。以下是我的示例html表。

          ----------------------------------------------------
           Time_stamp           Cpuutil        Queryresultset
          ----------------------------------------------------
           2011-03-09 12:00:00    2.3            9.8
           2011-03-09 12:15:00    5.3            4.5
           2011-03-09 12:30:00    4.3            9.3
           2011-03-09 12:45:00    2.3            9.2

3 个答案:

答案 0 :(得分:1)

我很害怕,我很难理解你的问题,但在我看来,你正在寻找的东西:

SELECT table1.time_stamp t1, table1.queryresultset, table2.time_stamp t2, table2.cpuutil

FROM table1 , table2

WHERE ABS(t1-t2)<100

  AND t1 >'2011-05-01 00:00:00' 

  AND t1 < '2011-05-01 05:00:00' 

ORDER by t1

另一个可能性:

        `SELECT column list
        FROM table1
                    INNER JOIN table2
                    ON table1.col1=table2.col2
        WHERE criteria
        ORDER BY column list `

祝你有个愉快的一天。

答案 1 :(得分:0)

这听起来像是一个数据库概念错误。如果您的两个表在逻辑上链接,它们应该有一个物理连接器。如果您可以重构数据库模型,最好的解决方案是添加一个表table0,在两个表之间保存公共因子(或只是一个自动增量id),然后将一个外部键添加到table1table2。您需要先在table0中插入一行,然后使用table1的密钥作为外部密钥,将一行插入table2,将一行插入table0


如果你不能重构表格,那太糟糕了。无论如何,做你想做的最简单的方法是编写java代码:

  • 从表1中打开resultset1
  • 从表2中打开resultset2
  • 虽然resultset1不为空
    • 从resultset1
    • 获取row1
    • 从resultset2
    • 获取row2
    • 生成html
  • 关闭结果集
  • 完成!

但这种方式是错误的,当你在项目中进一步推进时,你会遇到问题。

答案 2 :(得分:0)

感谢您的回复。所以我发现了查询。它现在正在运作。

   SELECT a.cpuutil,a.hostid,a.time_stamp, b.queryresultset, b.time_stamp AS tm 
   FROM table1 a, table2 b 
   WHERE a.hID = 'hs002' AND b.dID='cp011' 
   AND SUBSTR(a.time_Stamp,1,15) = SUBSTR(b.time_stamp,1,15) 
   AND a.time_stamp > '2011-05-10 00:00:00'
   AND a.time_stamp < '2011-05-10 14:00:00'