ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

10.03.2010, 12:33
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
Подскажите, плз. Нужен sql запрос в мускуль, который будет возвращать даты за определенный интервал. Чтобы было понятнее - сейчас пользуюсь таким запрсом:
Код:
SELECT date
FROM (
SELECT curdate()-interval 4 day AS date
UNION ALL SELECT curdate()-interval 3 day
UNION ALL SELECT curdate()-interval 2 day
UNION ALL SELECT curdate()-interval 1 day
UNION ALL SELECT curdate()
UNION ALL SELECT curdate()+interval 1 day
UNION ALL SELECT curdate()+interval 2 day
UNION ALL SELECT curdate()+interval 3 day
UNION ALL SELECT curdate()+interval 4 day
) as t
Но нужно более гибкое решение, чтобы можно было проще менять количество дней до\после curdate()
|
|
|

10.03.2010, 13:44
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Плюс к дате:
select adddate(curdate(),rownum) ddate from (select @r:=@r+1 rownum, t.* from (select @r:=0)a, information_schema.tables t where @r < datediff('2010-02-01','2010-01-10'))x
минус к дате:
select adddate(curdate(),-rownum) ddate from (select @r:=@r+1 rownum, t.* from (select @r:=0)a, information_schema.tables t where @r < datediff('2010-02-01','2010-01-10'))x
Код:
datediff('2010-02-01','2010-01-10')
тут задается кол-во дней + требуется так называемая "большая таблица", в которой записей не меньше, чем кол-во дней, в пример взята information_schema.tables
http://www.sql.ru/Forum/actualthread.aspx?tid=667216&hl=adddate
|
|
|

10.03.2010, 14:39
|
|
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме: 473495
Репутация:
39
|
|
А возможно без больших таблиц?
Считать rownum каким нибудь циклом, или вроде того?
Ведь если мне понадобится посчитать до числа большего чем кол-во строк в "большой таблице" (она ведь не бесконечна), то будет ошибка...
В любом случае спасибо и за это =)
Последний раз редактировалось OdaN; 10.03.2010 в 14:42..
|
|
|

20.03.2010, 10:49
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Наверное глупый вопрос,но Sql это моя слабая сторона(одна из многих  ), а вопрос собственно такой:
Как с помощью одного запроса update отредактировать 2 записи.То есть, хочу что то вроде:
Код:
UPDATE table SET col=val WHERE id=1 and WHERE id=2;
Должно получиться так,что бы отредактировалась и 1 и 2 записи.такой вот запрос есесно непрокатывает,а гугл предлагает только запросы с if-then, что я думаю тут использовать не кошерно, и будет проще составить 2 запроса.А 2 запроса составлять не хочу,ибо данные редактируютсья одинаковые,лишний код,ну вы понеле.
Может под-запросом,мили исчо как измудрится?
|
|
|

20.03.2010, 12:24
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Сообщение от m0Hze
Наверное глупый вопрос,но Sql это моя слабая сторона(одна из многих  ), а вопрос собственно такой:
Как с помощью одного запроса update отредактировать 2 записи.То есть, хочу что то вроде:
Код:
UPDATE table SET col=val WHERE id=1 and WHERE id=2;
Должно получиться так,что бы отредактировалась и 1 и 2 записи.такой вот запрос есесно непрокатывает,а гугл предлагает только запросы с if-then, что я думаю тут использовать не кошерно, и будет проще составить 2 запроса.А 2 запроса составлять не хочу,ибо данные редактируютсья одинаковые,лишний код,ну вы понеле.
Может под-запросом,мили исчо как измудрится?
Давай всмотримся и вдумаемся в то, что ты написал.
Итак, грубые приближения:
1) ключевое слово WHERE... Оно одно, после него должен идти предикат;
2) "id = 1 AND id = 2".Т.е. id одновременно должен быть равен и 1, и 2. Немного странно, неправда ли? Думаю уместнее будет дизъюнкция
Учитывая вышеизложенное, можем составить запрос:
Код:
UPDATE table SET col=val WHERE id=1 OR id=2;
Уже должно работать... Но выглядит как то странновато, не правда ли? Особенно на больших наборах данных. Для подобных ситуаций был придуман оператор IN:
Код:
UPDATE table SET col=val WHERE id IN(1,2)
|
|
|

20.03.2010, 12:26
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от VDShark
Давай всмотримся и вдумаемся в то, что ты написал.
Итак, грубые приближения:
1) ключевое слово WHERE... Оно одно, после него должен идти предикат;
2) "id = 1 AND id = 2".Т.е. id одновременно должен быть равен и 1, и 2. Немного странно, неправда ли? Думаю уместнее будет дизъюнкция
Учитывая вышеизложенное, можем составить запрос:
Код:
UPDATE table SET col=val WHERE id=1 OR id=2;
Уже должно работать... Но выглядит как то странновато, не правда ли? Особенно на больших наборах данных. Для подобных ситуаций был придуман оператор IN:
Код:
UPDATE table SET col=val WHERE id IN(1,2)
Я or не пробывал потому,что это или, и я думал оно исключающее ,Ж(
Спосебя)
|
|
|

20.03.2010, 22:07
|
|
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме: 2101094
Репутация:
672
|
|
поставь пробелы после запятых
|
|
|

20.03.2010, 22:14
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
6
|
|
не помогло.
ps mssql 2000
|
|
|

20.03.2010, 22:18
|
|
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме: 2101094
Репутация:
672
|
|
а какую именно ошибку выдает ?
|
|
|

20.03.2010, 22:31
|
|
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме: 310791
Репутация:
6
|
|
General SQL error Line1: Incorrect syntax near ','.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|