Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql php выбрать только изменяющиеся значения

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ekaterina23
Отправлено: 19 Октября, 2014 - 18:32:04
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




добрый вечер.
помогите, или хоть скажите, возможно это сделать при выборке из таблицы. вариант выбрать все строки, а потом фильтровать, не подходит.

есть таблица, скрин в файле. нужно выбрать самую новую строку (по timestamp), а дальше строку, в которой изменилось или значение sid, или hostname, или интервал timestamp более 15 минут.
дальше опять только ту строку в которой изменилось значение sid, или hostname, или интервал timestamp более 15 минут, по сравнению с уже выбранной строкой. и так далее, всего выбрать 20 строк.
Прикреплено изображение (Нажмите для увеличения)
Безимени-1.jpg

(Отредактировано автором: 19 Октября, 2014 - 18:32:28)

 
 Top
kotyara1979
Отправлено: 20 Октября, 2014 - 03:21:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




При текущей структуре ваши условия не выполнимы в части "измененных" sid или hostname.
Нужно ввести даты их последнего изменения. Нужно или ввести эти данные в таблицу или организовывать хранение периодических значений для отдельных полей.

В части timestamp я бы предложил следующее решение.

PHP:
скопировать код в буфер обмена
  1.  
  2. $pr_ts = 0;
  3. $gl_rez = array();
  4. for($i=1;$i<=20;$i++)
  5. {
  6.         if($i==1)
  7.         {
  8.                 $query = "select * from table order by timestamp desc limit 1";
  9.                 $row = mysqli_fetch_assoc(mysqli_query($con_db,$query));
  10.                 $pr_ts = $row['timestamp'];
  11.                 $gl_rez[] = $row;
  12.         }
  13.         else
  14.         {
  15.                 $query = "select * from table where {$pr_ts}-timestamp>60*15 order by timestamp desc limit 1";
  16.                 $row = mysqli_fetch_assoc(mysqli_query($con_db,$query));
  17.                 $pr_ts = $row['timestamp'];
  18.                 $gl_rez[] = $row;
  19.         }
  20. }
  21.  
  22. return $gl_rez;
  23.  


Может быть не самое оптимальное, но работающее.

(Отредактировано автором: 20 Октября, 2014 - 03:23:40)



-----
Сделать можно все. Главное одеть каску.
 
 Top
Ekaterina23
Отправлено: 20 Октября, 2014 - 14:50:41
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




kotyara1979 пишет:
Нужно или ввести эти данные в таблицу или организовывать хранение периодических значений для отдельных полей.

я не совсем поняла,
тоесть мне нужна дополнительная таблица и каждый раз проверять изменилось ли значение, тогда записывать в доп таблицу?
 
 Top
Tyoma5891
Отправлено: 20 Октября, 2014 - 14:57:51
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




Ekaterina23 пишет:
kotyara1979 пишет:
Нужно или ввести эти данные в таблицу или организовывать хранение периодических значений для отдельных полей.

я не совсем поняла,
тоесть мне нужна дополнительная таблица и каждый раз проверять изменилось ли значение, тогда записывать в доп таблицу?

kotyara1979 же не знает название Вашей таблицы, скрин который Вы приложили, поэтому и написал table просто)
 
 Top
kotyara1979
Отправлено: 20 Октября, 2014 - 15:27:01
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Ekaterina23 пишет:
тоесть мне нужна дополнительная таблица и каждый раз проверять изменилось ли значение, тогда записывать в доп таблицу?


Можно просто ввести в вашу же таблицу два дополнительных поля. В них писать даты последних изменений sid и hostname. Тогда вы сможете реализовать изначальное условие об отслеживании изменений этих полей.


-----
Сделать можно все. Главное одеть каску.
 
 Top
Ekaterina23
Отправлено: 20 Октября, 2014 - 22:51:50
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




kotyara1979 пишет:
Можно просто ввести в вашу же таблицу два дополнительных поля. В них писать даты последних изменений sid и hostname.

кажется я поняла, что вы имели ввиду, но тогда можно просто ставить метку, что есть изменения, столбец с датой уже есть, зачем его дублировать.
но все равно этот вариант мне не очень подходит, это друпал. мне бы больше подошел сам запрос к базе, нежели изменение таблицы. но раз только запросом мою задачу не решить, буду думать.
 
 Top
kotyara1979
Отправлено: 21 Октября, 2014 - 03:19:04
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Просто метка не даст возможность оценить актуальность изменения, если это понадобится. Хотя я не знаю как и для чего формируется данная таблица, может вам здесь это и не нужно.


-----
Сделать можно все. Главное одеть каску.
 
 Top
esterio
Отправлено: 21 Октября, 2014 - 11:49:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




всю ветку не читал но:
можна создать тригер и если есть изменения в полях заносить значения в другую таблицу з ИД иил ставить метку.
 
 Top
Ekaterina23
Отправлено: 21 Октября, 2014 - 11:54:34
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




kotyara1979 пишет:
Просто метка не даст возможность оценить актуальность изменения, если это понадобится. Хотя я не знаю как и для чего формируется данная таблица

столбец со временем уже есть, так чт актуальность оценить не проблема.
таблица, чтобы показать пользователю последние действия в его акунте.
(Добавление)
esterio пишет:
можна создать тригер и если есть изменения в полях заносить значения в другую таблицу

можно поподробнее об этом?
 
 Top
esterio
Отправлено: 21 Октября, 2014 - 13:29:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB