HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 10.03.2010, 12:33
OdaN
Участник форума
Регистрация: 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()
 
Ответить с цитированием

  #2  
Старый 10.03.2010, 13:44
Pashkela
Динозавр
Регистрация: 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
 
Ответить с цитированием

  #3  
Старый 10.03.2010, 14:39
OdaN
Участник форума
Регистрация: 04.03.2006
Сообщений: 159
Провел на форуме:
473495

Репутация: 39
По умолчанию

А возможно без больших таблиц?
Считать rownum каким нибудь циклом, или вроде того?
Ведь если мне понадобится посчитать до числа большего чем кол-во строк в "большой таблице" (она ведь не бесконечна), то будет ошибка...

В любом случае спасибо и за это =)

Последний раз редактировалось OdaN; 10.03.2010 в 14:42..
 
Ответить с цитированием

  #4  
Старый 20.03.2010, 10:49
m0Hze
Он хакер.
Регистрация: 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 запроса составлять не хочу,ибо данные редактируютсья одинаковые,лишний код,ну вы понеле.
Может под-запросом,мили исчо как измудрится?
 
Ответить с цитированием

  #5  
Старый 20.03.2010, 12:24
VDShark
Участник форума
Регистрация: 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)
 
Ответить с цитированием

  #6  
Старый 20.03.2010, 12:26
m0Hze
Он хакер.
Регистрация: 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 не пробывал потому,что это или, и я думал оно исключающее ,Ж(
Спосебя)
 
Ответить с цитированием

  #7  
Старый 20.03.2010, 22:07
Konqi
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме:
2101094

Репутация: 672


По умолчанию

поставь пробелы после запятых
 
Ответить с цитированием

  #8  
Старый 20.03.2010, 22:14
InfectedM
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме:
310791

Репутация: 6
По умолчанию

не помогло.
ps mssql 2000
 
Ответить с цитированием

  #9  
Старый 20.03.2010, 22:18
Konqi
Постоянный
Регистрация: 24.06.2009
Сообщений: 542
Провел на форуме:
2101094

Репутация: 672


По умолчанию

а какую именно ошибку выдает ?
 
Ответить с цитированием

  #10  
Старый 20.03.2010, 22:31
InfectedM
Познающий
Регистрация: 04.11.2007
Сообщений: 51
Провел на форуме:
310791

Репутация: 6
По умолчанию

General SQL error Line1: Incorrect syntax near ','.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сетевой этикет (Перед тем, как задать вопрос хакеру) satana-fu Статьи 7 21.10.2009 07:40
Ответы на часто задаваемые вопросы + линки на статьи по SQL/XSS/PHP-инклуд Jokester Уязвимости 2 28.06.2009 00:19
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.