Вверх ↑
Этот топик читают: Гость
Ответов: 9
Рейтинг: 1
#1: 2009-05-28 01:49:32 ЛС | профиль | цитата
Подскажите как организовать запрос UPDATE в SQLite. Дабы менялись данные (кол-во оставшихся дней) в одном из столбцов в зависимости от текущей даты...
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-05-28 12:56:26 ЛС | профиль | цитата
проблема в составление запроса или в подсчете дней?
карма: 27
0
Ответов: 9
Рейтинг: 1
#3: 2009-05-28 15:37:12 ЛС | профиль | цитата
С подсчетом дней разобрался. Не могу вникнуть, как составить запрос и куда его влепить.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2009-05-28 15:39:33 ЛС | профиль | цитата

#sql
UPDATE MyTable SET days = <num days>
вставлять в элемент SQLite_exec. Пример: DataBaseSQLite_demo.sha
карма: 27
0
Ответов: 9
Рейтинг: 1
#5: 2009-05-28 15:47:54 ЛС | профиль | цитата
Спасибо за оперативность ответов. Буду пробовать
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#6: 2009-05-28 19:21:04 ЛС | профиль | цитата
Deconer писал(а):
Дабы менялись данные (кол-во оставшихся дней) в одном из столбцов в зависимости от текущей даты...

А зачем каждый день UPDATE ? Такая колонка в таблице вообще лишняя.
Считать при необходимости, а не "дергать каждый раз БД" на перезапись.

SELECT  формула подсчета дней AS Осталось_дней FROM MyTable      
И любуйся себе на число оставшихся дней (или чего другого).
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2009-05-28 19:51:14 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2022-09-20 01:49:44
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2009-05-28 20:14:31 ЛС | профиль | цитата
вообще-то если обе даты лежит в таблице, то надо делать так, как советует Tad. Если же женский коллектив заходит в базу напрямую... то видимо увы.
карма: 27
0
Ответов: 9
Рейтинг: 1
#9: 2009-05-28 21:06:15 ЛС | профиль | цитата
Как я понимаю это скажется только на скорости открытия базы (весь рабочий день окно не закрывается)?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2009-05-28 22:07:37 ЛС | профиль | цитата
Deconer, на чем это скажется можно судить только после предоставления полной информации о поставленной задачи. Если в базе тысячи записей и все они сразу же выбираются селектом то да - скорость выборки уменьшится на одну десятую процента примерно.
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2009-05-28 22:55:46 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2022-09-20 01:49:43
карма: 0

0
Ответов: 9
Рейтинг: 1
#12: 2009-05-28 22:59:15 ЛС | профиль | цитата
Суть такова:
Есть некая таблица в которой ведется учет выданных разрешений перевозчикам. Указывается перевозчик, страна, номер машины, номер разрешения, даты получения, выдачи на руки и сдачи разрешений, срок действия (60 дней от даты получения), примечания. За 11 дней до истечения срока должна как-либо выделяться строка с "должником". Плюс отчет по количеству разрешений по странам на руках в виде таблицы перевозчик/страна.
Вот, собственно, полная информация о поставленной задаче. До поры-времени с этим прекрасно справлялся EXCEL, но при 2к записей за 4 месяца файло выросло до 30+ Мб, открывается и сохраняется на компах Celeron 2.0, 512 Мб минут по 10. Вот и назрело время перекинуть все это в SQLite.
Сел за написание в HiASM`e, уперся в некоторые моменты. Советам как это реализовать лучше, без потери скорости буду оч. признателен.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#13: 2009-05-28 22:59:51 ЛС | профиль | цитата
93-172-128-58.bb.netvisio это я.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Deconer
Ответов: 9
Рейтинг: 1
#14: 2009-05-28 23:16:04 ЛС | профиль | цитата
93-172-128-58.bb.netvisio писал(а):
SELECT ... , ... , ...., julianday(date_end) - julianday(current_date) AS Осталось FROM MyTable WHERE Осталось < 5
date_end должна храниться в таблице в формате гггг-мм-дд

О, как!
Вся фишка в правильном запросе.
93-172-128-58.bb.netvisio писал(а):
и увидев вычисляемую колонку в таблице

так и сделал по-началу. Сейчас перелопачу.
Спасибо за совет.
P.S. Сижу изучаю Грубера и, собственно, сам HiASM. Первая попытка сваять что-то. Потому пинки в нужную сторону приветствуются.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#15: 2009-05-28 23:21:56 ЛС | профиль | цитата

SELECT *, julianday(date_получения) + 60 - julianday(current_date) AS Осталось   FROM MyTable WHERE  Осталось < 12 AND Сдал=0 (или дата_сдачи = "")
Вот такой запрос выведет список "должников".
Для того, чтобы получить нужные данные с БД, совсем не объязательно видеть на экране монитора все записи.

Главное правильно спроектировать БД.
1. Если перевозчики постоянные, то нужна таблица перевозчиков и ? номера машин.
2. Таблица стран
3. "Главная" таблица:№ разрешения, Дата получения, Дата выдачи на руки, Примечание.
Но нужно точно знать что конкретно нужно. (Список колонок EXCEL)


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)