Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2011, 11:47   #11
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Проблема такая: Сервер иногда теряет соединение с клиентом, и в базу данных ничего не записывается, я сделал выбор данных с интервалом 1 час:
Код:
SELECT int_pos_0.Sys_Time
FROM disp.int_pos int_pos_0
WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR)
Как распознать пустой запрос, есть или нет данных в выбранных записях в поле Sys_Time за последний час?
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 19.08.2011, 19:16   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Как распознать пустой запрос, есть или нет данных в выбранных записях в поле Sys_Time за последний час?
"Казнить нельзя помиловать" - вот и разберись в смысле вопроса. Укажите СУБД и вопрос понятней сформулируйте, пример записей приведите и что в результате нужно получить.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.08.2011 в 21:15.
Аватар вне форума Ответить с цитированием
Старый 19.08.2011, 20:48   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в выбранных записях
А как они выбираются?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2011, 07:46   #14
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
"Казнить нельзя помиловать" - вот и разберись в смысле вопроса. Укажите СУБД и вопрос понятней сформулируйте, пример записей приведите и что в результате нужно получить.
При выполнении запроса, приведенного мною выше, выбираются данные из поля Sys_Time, базы данных disp:

То есть выбираются данные за последний час.
Но иногда при данном запросе я получаю следующую картину:

То есть данные в поле Sys_Time за последний час отсутствуют, или поле пустое и ничего не содержит, или записей 0.
Мне нужно написать условие:
Если данные отсутствуют (Sys_Time = ????), то выполнить действие 1 (например вставить запись в определенное поле СУБД disp).
Как распознать тот факт, что поле Sys_Time пришло пустым?

PS. Забыл указать, сервер БД - MySQL.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 22.08.2011 в 07:55.
rainbow вне форума Ответить с цитированием
Старый 22.08.2011, 08:11   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как вариант (если EXISTS поддерживается)
Код:
  ...
  WHERE NOT EXISTS(
    SELECT int_pos_0.Sys_Time
      FROM disp.int_pos int_pos_0
      WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2011, 08:22   #16
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Как вариант (если EXISTS поддерживается)
Код:
  ...
  WHERE NOT EXISTS(
    SELECT int_pos_0.Sys_Time
      FROM disp.int_pos int_pos_0
      WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))
Не, так не работает, еще хотел сделать так:
Код:
SELECT COUNT(*) FROM (SELECT int_pos_0.Sys_Time
FROM disp.int_pos int_pos_0
WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))
Чтобы подсчитать количество записей count, и если count = 0, то выполнить действие 1, но к сожалению у меня ничего не получилось.
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 22.08.2011, 08:26   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

с COUNT вариант такой
Код:
...
  WHERE (SELECT COUNT(*)
      FROM disp.int_pos int_pos_0
      WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))=0
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2011, 08:38   #18
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
с COUNT вариант такой
Код:
...
  WHERE (SELECT COUNT(*)
      FROM disp.int_pos int_pos_0
      WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))=0
Так тоже не работает
Ужас, как я устал от тупизны...
rainbow вне форума Ответить с цитированием
Старый 22.08.2011, 08:42   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А как выглядит в целом то, что не работает?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2011, 08:49   #20
rainbow
Форумчанин
 
Регистрация: 06.09.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А как выглядит в целом то, что не работает?
Так:
Код:
SELECT int_pos_0.Sys_Time
FROM disp.int_pos int_pos_0
WHERE (SELECT COUNT(*)
FROM disp.int_pos int_pos_0
WHERE (int_pos_0.Sys_Time>NOW() - INTERVAL 1 HOUR))=0
Ошибка синтаксиса.
Ужас, как я устал от тупизны...

Последний раз редактировалось rainbow; 22.08.2011 в 08:58.
rainbow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запросы Frosts Помощь студентам 2 18.05.2011 11:24
SQL запросы akimov_aleks БД в Delphi 3 21.04.2010 05:42
SQL запросы Best Programmist Microsoft Office Access 8 03.12.2009 16:42
sql запросы wolf950 БД в Delphi 2 28.11.2008 21:26