SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.06.2010 12:54:23

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

запрос на добавления новой строки

Уважаемые эксперты у меня есть запрос
по выполнению этот запрос добавляет одну строку мне надо создать цикл чтобы 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

Неактивен

 

#2 04.06.2010 15:35:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на добавления новой строки

Этот запрос ничего никуда не добавляет. Для добавления нужно, чтобы он
начинался с INSERT. Объясните, пожалуйста, что Вы хотите получить.

Неактивен

 

#3 07.06.2010 08:49:18

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

этот запрос создает строку с 13 элементами строки.Мне надо сделать цикл по времени.Чтобы цикл был от начального времени до конечного с промежутком 12 часов.Каждый цикл должен быть следующей строкой с 13 элементами строки

Неактивен

 

#4 07.06.2010 09:39:22

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: запрос на добавления новой строки

Вдумчиво на 3 раза перечитал так и не понял чего хочешь. больше информации надо

Неактивен

 

#5 07.06.2010 09:51:30

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

я задаю начальное время и конечное....надо чтобы запрос выполнялся от начального времени +12 часов до конечного то есть организовать цикл для запроса...а как это сделать...

Неактивен

 

#6 07.06.2010 10:02:22

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: запрос на добавления новой строки

Не боишься базу положить такой идеей?
глянь тут http://dev.mysql.com/doc/refman/5.0/en/ … views.html

Неактивен

 

#7 07.06.2010 10:14:55

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

так этот запрос будет раз в месяц проходить...а что именно глянуть?

Неактивен

 

#8 07.06.2010 10:18:13

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: запрос на добавления новой строки

Я так понимаю тебе что то в этом роде надо?


IF условие THEN
 действие;
 ELSE
 действие;
 END IF;
 
 WHILE условие DO
 действие;
 END WHILE;

Неактивен

 

#9 07.06.2010 10:19:35

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: запрос на добавления новой строки

Просто задача какая? )) быть может проще в кроне сделать что то

Неактивен

 

#10 07.06.2010 10:24:17

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

да что-то такое спасибо большое...еще ты можешь подсказать есть ли в SQL процедурка типа IncHour в Delphi и еще один вопрос по завершению работы цикла как сделать так чтобы каждый шаг цикла формировал новую строку из 13 элементов?

Неактивен

 

#11 07.06.2010 10:29:32

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

995533 написал:

Просто задача какая? )) быть может проще в кроне сделать что то

Задача создать отчет из 13 параметров за смену(12 часов) от начального промежутка времени до конечного...Начальный и конечный промежуток задаются руками.первыя строка 1-смена,2 строка 2 смена, 3 строка 1 смена следующего дня и т.д.

Неактивен

 

#12 07.06.2010 10:35:54

995533
Участник
Зарегистрирован: 10.01.2009
Сообщений: 16

Re: запрос на добавления новой строки

Отправил тебе сообщение то-ли в личку то-ли на мыло придет

Неактивен

 

#13 07.06.2010 12:55:17

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

такой цикл может работать?
if   FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_if

Неактивен

 

#14 07.06.2010 18:35:50

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: запрос на добавления новой строки

такой цикл может работать?
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;

Неактивен

 

#15 07.06.2010 20:57:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на добавления новой строки

Миш, пиши легко читаемые (и запоминаемые) конструкции:

SET FirsetDate := FirstDate + INTERVAL 12 HOUR;

Неактивен

 

#16 08.06.2010 10:34:59

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

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 элементов формировалась пока не сравняются конечная дата с начальной

Неактивен

 

#17 09.06.2010 09:30:27

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

я правильно понял что это выполниться 1 раз то есть появится вторая строчка и все?может как-то с while попробывать

Неактивен

 

#18 09.06.2010 12:31:17

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: запрос на добавления новой строки

995533 написал:

Отправил тебе сообщение то-ли в личку то-ли на мыло придет

Такого делать не нужно. Следует писать сюда, т.к. обсуждение только в теме (плюс писать сюда состоит также в том, что это увидят еще много народу, а не только я).
Письмами у нас обсуждаются только платные услуги.

paulus написал:

Миш, пиши легко читаемые (и запоминаемые) конструкции:

SET FirsetDate := FirstDate + INTERVAL 12 HOUR;

Да я хотел было написать, но как-то у меня получилось, что такое вернуло дату не в том формате (воспроизвести не получилось, но из-за этого к датам через плюс возникло недоверие..)
Кстати. Зачем равно с присвоением ( := ) ? Разве просто равно не хватит?

zexxer написал:

я правильно понял что это выполниться 1 раз

Да, правильно.

Вы спросили

такой цикл может работать?
if   FirstDate=LastDate
Then FirstDate+IncHour(12)
Else FirstDate:=LastDate
End_if

Я Вам ответил про этот код; цикла в нём нет. Если нужен цикл - пишите, какой хотите цикл.

Неактивен

 

#19 09.06.2010 12:37:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на добавления новой строки

2Lazy: Простого равенства хватит. И даже в SELECT хватит иногда. Но я предпочитаю
писать := при присвоениях, чтобы не задумываться, где хватит, а где нет smile

Неактивен

 

#20 09.06.2010 13:00:18

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

я хочу чтобы был цикл от начального времени до конечного,то есть пока не совпадет время начальное и конечное через каждые 12 часов будет добавляться строчка с 13-ю параметрами...т.е. количество строк равно конечное время-начальное/12...Т.е. за день надо добавление 2 строк...Помогите пожалуйста с циклом while

Неактивен

 

#21 10.06.2010 13:03:25

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: запрос на добавления новой строки

WHILE - это только в процедуре.
(процедуры писать умеете?)

Надо что-то типа

WHILE FirstDate < LastDate DO

    IF FirstDate=LastDate THEN
        SET FirstDate = DATE_ADD(FirstDate, INTERVAL 12 HOUR);
    ELSE
        SET FirstDate = LastDate;
    END IF;
   
    -- тут - что ещё делать...
   
END WHILE;

Неактивен

 

#22 08.07.2010 16:37:33

zexxer
Участник
Зарегистрирован: 04.06.2010
Сообщений: 13

Re: запрос на добавления новой строки

Здравствуйте помогите пожалуйста...есть дискретный сигнал,т.е. его значения могут быть либо 0 либо 1 помогите пожалуйста с запросом ,так чтобы я задавал дату и время и я как-нибудь бы получил временной интервал точнее его величину...то есть сигнал изменился с 0 до 1 5 раз за временной промежуток который я выбирал и каждый раз добавлялась строка содержащее время начало режима и временной интервал пока был 0 то есть агрегат не работал...надо узнать количество простоев и их величину

Неактивен

 

#23 08.07.2010 16:45:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на добавления новой строки

Попробуйте разбить мысль на несколько предложений. Иначе ничего не понятно.
Ну и пример обычно помогает понять smile

Неактивен

 

#24 08.07.2010 17:10:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: запрос на добавления новой строки

Аха, открыли новую тему, эту тогда закрою.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson