2013-11-15 3 views
0

Я хочу вычитать значение anem_reading, введенное в session = 'morning' в оба дня, i.date = today и x.date вчера значение отображается как «run», но ошибка в sql код АвтошоуMysql - значение вычитания из предыдущего дня entring

SELECT x.date, 

    i.anem_reading - (SELECT anem_reading 
       FROM reg_data x 
       WHERE date = DATE_SUB(now(), INTERVAL 1 DAY) 
       AND x.(session=morning) = (i.session=morning) 
       ORDER BY date 
       LIMIT 1) run FROM reg_data i; 



    CREATE TABLE `reg_data` (
    `date` varchar(10) NOT NULL, 
    `session` varchar(10) NOT NULL, 
    `time` time default NULL, 
    `temp_air` float NOT NULL, 
    `rel_humid` float NOT NULL, 
    `soil_temp_5` float NOT NULL, 
    `soil_temp_20` float NOT NULL, 
    `soil_temp_30` float NOT NULL, 
    `soil_temp_60` float NOT NULL, 
    `air_pressure` float NOT NULL, 
    `anem_reading` float NOT NULL, 
    `dry_temp` float NOT NULL, 
    `wet_temp` float NOT NULL, 
    PRIMARY KEY (`date`,`session`) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
+0

Был 'FLOAT' дель iberate выбор? – Strawberry

+0

Я не думаю, что 'i.anem_reading - (выберите X) run FROM' что-нибудь действительно синтаксис MySQL. Вы пропускаете часть запроса или имеете некоторые проблемы с скобками? (возможно, даже просто пропуская 'AS run')? –

+0

@ebyrob да это мой вопрос, пожалуйста, дайте мне помощь для запроса godd – user2986352

ответ

0

же запрос переводил стиль (надеюсь точно):

SELECT 
    /**/x.date,/**/ -- this is a bug and should be fixed (i?) 
    i.anem_reading - (
    SELECT x.anem_reading 
    FROM reg_data AS x 
    WHERE x.date = DATE_SUB(now(), INTERVAL 1 DAY) -- relative to i.date? 
     AND (x.session = x.morning) = (i.session = i.morning) 
    ORDER BY x.date -- should be DESC? 
    LIMIT 1 
) AS run 
FROM reg_data AS i 
; 
+0

не работает хорошо спасибо за ваш добрый запрос мой друг – user2986352

1

Пожалуйста, попробуйте следующее:

select a.dateToday, i.anem_reading - a.anem_reading 
from    
(    
SELECT anem_reading 
FROM reg_data x 
WHERE date = DATE_SUB(now(), INTERVAL 1 DAY)    
    and session='morning' 
    limit 1 
) a, 
    reg_data i 
where i.session = 'morning' 
+0

Sheesh, как вы узнали, что утром была строка, а не колонка ... –

+0

@ Александр не работает хорошо ошибка .... но thks для запроса yoyr kind – user2986352

Смежные вопросы