从多个表中获取价值

时间:2014-04-10 17:06:52

标签: mysql sql

我有这个代码,我从4月份的一个表中得到'价值'

SELECT FROM_UNIXTIME(t_stamp/1000, '%Y-%m-%d %l:%i %p') as t_stamp,
  ROUND(AVG(CASE WHEN id = '1' THEN value END),2) Col1,
  ROUND(AVG(CASE WHEN id = '2' THEN value END),2) Col2
FROM tableforapril
WHERE 
  id IN ('1','2') 
  and DATE( from_unixtime( t_stamp / 1000 ) ) 
        BETWEEN '2014-04-01' and '2014-04-01'
  and value is not null
GROUP BY
  DATE(from_unixtime(t_stamp / 1000 )),
  HOUR(from_unixtime(t_stamp / 1000 ))

但我遇到的问题是我有不止一张桌子,我有另一张桌子用于游行 其中我还需要从该表中获取“值”列。

如果我这样做的时间戳如下:

and DATE( from_unixtime( t_stamp / 1000 ) ) 
        BETWEEN '2014-03-31 and '2014-04-01'

我需要从march表和april表中获取'value'列。 输出看起来像这样:

t_stamp         |   Col1    |   Col2
2014-04-01 3:00 AM  |   1.23    |   2.33
2014-04-01 5:00 AM  |   4.55    |   5.13
2014-03-31 1:00 PM  |   12.33   |   2.00
2014-03-31 2:00 PM  |   5.12    |   3.99

Col1和Col2列均来自march和april表。我正在使用的表按月分隔,两个表的值都为t_stamp。不幸, 我无法编辑我正在使用的表格,因为我不允许这样做。

在我的项目中,用户将根据下拉列表

选择t_stamp

1 个答案:

答案 0 :(得分:1)

由于你有两个单独的表,除非你加入它们,否则无法查询它们,因为你没有提供任何关系数据点,你唯一的选择就是联合。类似的东西:

SELECT * FROM tableforapril 
WHERE....
UNION ALL
SELECT * FROM tableformarch
WHERE ...

另一个解决方案可能只是从两个表中返回内容:

SELECT a.col1, a.col2, b.col1, b.col2 FROM tableforapril a, tableformarch b