Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые эксперты у меня есть запрос
по выполнению этот запрос добавляет одну строку мне надо создать цикл чтобы 1строка добавлялась через каждые 12 часов после начала запроса
SELECT table1.Qpech, table2.Qdek, table3.Proiz, table4.Qkgt, table5.Qkek, table6.Qkl, table7.Igp, table8.Tobr, table9.T1cik, table10.Tvt, table11.Rgp,
table12.Pob, table13.P1cik
FROM (SELECT ROUND(AVG(Value), 2) AS Qpech
FROM GrafP8
WHERE (TagIndex = 5) AND (DateAndTime > '02.06.2010') AND (DateAndTime < '2010:06:03')) AS table1 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Qdek
FROM GrafP8 AS GrafP8_1
WHERE (TagIndex = 6) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table2 CROSS JOIN
(SELECT ROUND(SUM(Value) / 12, 2) AS Proiz
FROM GrafP8 AS GrafP8_2
WHERE (TagIndex = 9) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table3 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Qkgt
FROM GrafP8 AS GrafP8_3
WHERE (TagIndex = 2) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table4 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Qkek
FROM GrafP8 AS GrafP8_4
WHERE (TagIndex = 8) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table5 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Qkl
FROM GrafP8 AS GrafP8_5
WHERE (TagIndex = 10) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table6 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Igp
FROM GrafP8 AS GrafP8_6
WHERE (TagIndex = 11) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table7 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Tobr
FROM GrafP8 AS GrafP8_7
WHERE (TagIndex = 12) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table8 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS T1cik
FROM GrafP8 AS GrafP8_8
WHERE (TagIndex = 13) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table9 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Tvt
FROM GrafP8 AS GrafP8_9
WHERE (TagIndex = 14) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table10 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Rgp
FROM GrafP8 AS GrafP8_10
WHERE (TagIndex = 23) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table11 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS Pob
FROM GrafP8 AS GrafP8_11
WHERE (TagIndex = 25) AND (DateAndTime > '2010:06:02') AND (DateAndTime < '2010:06:03')) AS table12 CROSS JOIN
(SELECT ROUND(AVG(Value), 2) AS P1cik
FROM GrafP8 AS GrafP8_12
WHERE (TagIndex = 47) AND (DateAndTime > '2010:06:02'') AND (DateAndTime < ' 2010 : 06 : 02 ')) AS table13
Неактивен
Этот запрос ничего никуда не добавляет. Для добавления нужно, чтобы он
начинался с INSERT. Объясните, пожалуйста, что Вы хотите получить.
Неактивен
этот запрос создает строку с 13 элементами строки.Мне надо сделать цикл по времени.Чтобы цикл был от начального времени до конечного с промежутком 12 часов.Каждый цикл должен быть следующей строкой с 13 элементами строки
Неактивен
Вдумчиво на 3 раза перечитал так и не понял чего хочешь. больше информации надо
Неактивен
я задаю начальное время и конечное....надо чтобы запрос выполнялся от начального времени +12 часов до конечного то есть организовать цикл для запроса...а как это сделать...
Неактивен
Не боишься базу положить такой идеей?
глянь тут http://dev.mysql.com/doc/refman/5.0/en/ … views.html
Неактивен
так этот запрос будет раз в месяц проходить...а что именно глянуть?
Неактивен
Я так понимаю тебе что то в этом роде надо?
Неактивен
Просто задача какая? )) быть может проще в кроне сделать что то
Неактивен
да что-то такое спасибо большое...еще ты можешь подсказать есть ли в SQL процедурка типа IncHour в Delphi и еще один вопрос по завершению работы цикла как сделать так чтобы каждый шаг цикла формировал новую строку из 13 элементов?
Неактивен
995533 написал:
Просто задача какая? )) быть может проще в кроне сделать что то
Задача создать отчет из 13 параметров за смену(12 часов) от начального промежутка времени до конечного...Начальный и конечный промежуток задаются руками.первыя строка 1-смена,2 строка 2 смена, 3 строка 1 смена следующего дня и т.д.
Неактивен
Отправил тебе сообщение то-ли в личку то-ли на мыло придет
Неактивен
такой цикл может работать?
if FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_if
Неактивен
такой цикл может работать?
if FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_if
Это не цикл.
Надо так:
Неактивен
Миш, пиши легко читаемые (и запоминаемые) конструкции:
SET FirsetDate := FirstDate + INTERVAL 12 HOUR;
Неактивен
LazY написал:
такой цикл может работать?
if FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_ifЭто не цикл.
Надо так:
IF FirstDate=LastDate THEN
SET FirstDate = DATE_ADD(FirstDate, INTERVAL 12 HOUR);
ELSE
SET FirstDate = LastDate;
END IF;
это разве не будет единоразово выполняться???мне же нужна чтобы каждая строка из 13 элементов формировалась пока не сравняются конечная дата с начальной
Неактивен
я правильно понял что это выполниться 1 раз то есть появится вторая строчка и все?может как-то с while попробывать
Неактивен
995533 написал:
Отправил тебе сообщение то-ли в личку то-ли на мыло придет
Такого делать не нужно. Следует писать сюда, т.к. обсуждение только в теме (плюс писать сюда состоит также в том, что это увидят еще много народу, а не только я).
Письмами у нас обсуждаются только платные услуги.
paulus написал:
Миш, пиши легко читаемые (и запоминаемые) конструкции:
SET FirsetDate := FirstDate + INTERVAL 12 HOUR;
Да я хотел было написать, но как-то у меня получилось, что такое вернуло дату не в том формате (воспроизвести не получилось, но из-за этого к датам через плюс возникло недоверие..)
Кстати. Зачем равно с присвоением ( := ) ? Разве просто равно не хватит?
zexxer написал:
я правильно понял что это выполниться 1 раз
Да, правильно.
Вы спросили
такой цикл может работать?
if FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_if
Я Вам ответил про этот код; цикла в нём нет. Если нужен цикл - пишите, какой хотите цикл.
Неактивен
2Lazy: Простого равенства хватит. И даже в SELECT хватит иногда. Но я предпочитаю
писать := при присвоениях, чтобы не задумываться, где хватит, а где нет
Неактивен
я хочу чтобы был цикл от начального времени до конечного,то есть пока не совпадет время начальное и конечное через каждые 12 часов будет добавляться строчка с 13-ю параметрами...т.е. количество строк равно конечное время-начальное/12...Т.е. за день надо добавление 2 строк...Помогите пожалуйста с циклом while
Неактивен
WHILE - это только в процедуре.
(процедуры писать умеете?)
Надо что-то типа
Неактивен
Здравствуйте помогите пожалуйста...есть дискретный сигнал,т.е. его значения могут быть либо 0 либо 1 помогите пожалуйста с запросом ,так чтобы я задавал дату и время и я как-нибудь бы получил временной интервал точнее его величину...то есть сигнал изменился с 0 до 1 5 раз за временной промежуток который я выбирал и каждый раз добавлялась строка содержащее время начало режима и временной интервал пока был 0 то есть агрегат не работал...надо узнать количество простоев и их величину
Неактивен
Попробуйте разбить мысль на несколько предложений. Иначе ничего не понятно.
Ну и пример обычно помогает понять
Неактивен
Аха, открыли новую тему, эту тогда закрою.
Неактивен