2017-12-02 83 views
0

我需要在四分型動物在兩個表中的最大值和顯示。 Celsius |嗯| fecha_temp | fecha_hum查詢兩個表中獲得最大的價值MySQL的

Table: temperaturas 
Columns: 
id_temp int(11) AI PK 
celsius_temp decimal(10,0) 
fah_temp decimal(10,0) 
fecha_temp datetime 

Table: humedad 
Columns: 
id_hum int(11) AI PK 
hum_hum float 
fecha_hum datetime 

我嘗試這個查詢,但不工作

select t.celsius_temp as celsius, h.hum_hum, t.fecha_temp, h.fecha_hum from 
temperaturas t 
inner join humedad h on h.hum_hum <=(select max(h.hum_hum) from humedad h) 
where t.celsius_temp<=(select max(t.celsius_temp) from temperaturas t) and 
t.fecha_temp between '2017-12-01' and '2017-12-05' 
order by t.celsius_temp, h.hum_hum desc limit 1; 

非常感謝

+1

最大值? – Imran

回答

1

每個表的期間的最大值爲:

SET @start_date = '2017-12-01'; 
SET @end_date = '2017-12-01'; 
SELECT MAX(t.celsius_temp) INTO @tmax FROM temperaturas t 
    WHERE t.fecha_temp BETWEEN @start_date AND @end_date; 
SELECT MAX(h.hum_hum) INTO @hmax FROM humedad h 
    WHERE t.fecha_hum between @start_date AND @end_date; 

你可以讓他們都到一個表做:

SELECT @tmax, @hmax; 

如果你想知道在哪裏達到最高溫度或溼度最大值這是一個有點棘手,因爲你可能有相同的值多個日期的日期。你可以這樣寫一個單一的查詢,但我寧願用上面的查詢,然後運行:

SELECT * from temperaturas t where t.celsius_temp = @maxt; 
SELECT * from humedad h where h.hum_hum = @maxh; 

請記住,這可能有多個行,如果溫度在多個日期相同。沒有簡單明智的方式將如何將它加入到一個表中。

如果每天多次測量,並正在尋找在每一天的最高溫度/溼度,那麼你要使用GROUP BY功能。然後,您可以加入的時間戳的日期()函數的是這樣的:

SELECT coalesce(date(t.fecha_temp), date(h.fecha_hum)), 
    MAX(t.celsius_temp) as celsius, 
    MAX(h.hum_hum) as humibity 
FROM temperaturas t 
OUTER JOIN humedad h on date(t.fecha_temp) = date(h.fecha_hum) 
WHERE coalesce(date(t.fecha_temp), date(h.fecha_hum)) 
    between @start_date and @end_date 
GROUP BY coalesce(date(t.fecha_temp), date(h.fecha_hum)) 
ORDER BY coalesce(date(t.fecha_temp), date(h.fecha_hum)) 

coalesce()此功能是必要的,因爲你可能有隻有一個表可能有數據的日期。

此連接,如果你有大量的數據,在這種情況下,你可能想看看同組函數結果創建臨時表,然後加入只是每日期單列效率不高。該柱的