Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26160
Рейтинг: 2127
#16: 2013-09-11 16:49:00 ЛС | профиль | цитата
Chipset писал(а):
Два раза это поставил.

А кто-нибудь читает предыдущие посты, или только свои видит
nesco писал(а):
у тебя ошибка есть в запросе, вместо последнего LIKE '20,%' надо LIKE '%,20', а то он у тебя повторяется. Должно же быть -- 20 в начале, 20 в середине, 20 в конце, единственное 20

карма: 22

0
Ответов: 186
Рейтинг: 9
#17: 2013-09-11 17:06:47 ЛС | профиль | цитата
nesco писал(а):
А кто-нибудь читает предыдущие посты, или только свои видит

Блин, реально пропустил, Пардон
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#18: 2013-09-11 18:08:17 ЛС | профиль | цитата
nesco, хорошую задачу поставил со 2-ым числом.
Попробуй выбрать строки в которых есть 2-е число ( и имеется 22-е)
%2,% и %,2% выберут 22-е запросто
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1061
Рейтинг: 22
#19: 2013-09-11 18:20:19 ЛС | профиль | цитата
Tad, я тоже это заметил, хотел предложить хотя-бы, что-бы каждое число было обернуто в символы разделители, допустим ",1,,2,,3,,4,", но, что есть, то есть, и не предложил! ) Тут только базу в корне менять и переносить данные с распределением, только потом можно говорить о "Составить средней сложности SQL запрос"! )
карма: 0

0
Ответов: 758
Рейтинг: 112
#20: 2013-09-11 19:01:31 ЛС | профиль | цитата
Tad писал(а):
хорошую задачу поставил со 2-ым числом.

Все нормально
SELECT * FROM rules_month WHERE month_days LIKE '2,%' OR month_days LIKE '%,2,%' OR month_days LIKE '%,2' OR month_days = '2'
карма: 1

1
файлы: 1code_31801.txt [140B] [192]
Голосовали:RinniX
Разработчик
Ответов: 26160
Рейтинг: 2127
#21: 2013-09-11 19:03:10 ЛС | профиль | цитата
Tad писал(а):
%2,% и %,2%

А откуда взялись эти условия В оригинальном запросе все немного по-другому, ты внимательнее посмотри

Вот и miver, это же заметил
карма: 22

0
Ответов: 758
Рейтинг: 112
#22: 2013-09-11 19:18:33 ЛС | профиль | цитата
hitman249, Если можно поменять структуру БД то лучше столбец month_days представить в виде 31 разрядной двоичной строки и использовать функцию substr(X,Y,Z)
например: "7,20,17,3" => "0010001000000000100100000000000"
Тогда запрос для 20 будет
SELECT * FROM rules_month WHERE substr(month_days,20,1)=1
карма: 1

1
Голосовали:Tad
Ответов: 16884
Рейтинг: 1239
#23: 2013-09-11 19:40:23 ЛС | профиль | цитата
miver, опередил, но... substr(month_days,20,1) никогда не будет =1

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 186
Рейтинг: 9
#24: 2013-09-11 20:43:52 ЛС | профиль | цитата
[flood]Походу hitman249, запрос больше не нужен [/flood]
карма: 0

0
Ответов: 1061
Рейтинг: 22
#25: 2013-09-11 21:19:27 ЛС | профиль | цитата
Chipset писал(а):
Походу hitman249, запрос больше не нужен

А мы перешли в стадию, когда автор уже не нужен! )
карма: 0

0
Ответов: 758
Рейтинг: 112
#26: 2013-09-11 22:26:43 ЛС | профиль | цитата
Tad писал(а):
miver, опередил, но... substr(month_days,20,1) никогда не будет =1

Ну да кавычек не хватает

Но если пойти дальше, то можно записывать десятеричное представление двоичной строки
Пример
"7,20,17,3" => (10010000000001000100)b => 589892
Тогда запрос для 20 будет
SELECT * FROM rules_month WHERE (month_days&(1<<(20-1)))=(1<<(20-1))
карма: 1

0
Ответов: 186
Рейтинг: 9
#27: 2013-09-12 05:22:12 ЛС | профиль | цитата
miver писал(а):
Тогда запрос для 20 будет
SELECT * FROM rules_month WHERE (month_days&(1<<(20-1)))=(1<<(20-1))

Как я понял это решает только часть задачи.

hitman249, сам написал почти правильный запрос по нахождению конкретного значения.

#sql
SELECT * FROM rules_month WHERE (month_days LIKE '20,%' OR month_days LIKE '%,20,%' OR month_days LIKE '20,%' OR month_days = '20')
nesco писал(а):
у тебя ошибка есть в запросе, вместо последнего LIKE '20,%' надо LIKE '%,20', а то он у тебя повторяется. Должно же быть -- 20 в начале, 20 в середине, 20 в конце, единственное 20


А вот
hitman249 писал(а):
либо больше текущей даты

Я пока решения не увидел, да и сам не смог решить.
карма: 0

0
Ответов: 1528
Рейтинг: 57
#28: 2013-09-12 06:49:31 ЛС | профиль | цитата
miver писал(а):
Но если пойти дальше, то можно записывать десятеричное представление двоичной строки
нельзя
hitman249 писал(а):
нужен был режим "человека_в_голой_базе_понимака"
а что можно понять в 10000111010001 или 98654?

решение с боку, это "простреливать" будущие 30 дней по одному дню, перебором.
хотя конечно в оригинале нужно выводить все будущие значения
карма: 0

0
Ответов: 1061
Рейтинг: 22
#29: 2013-09-12 08:54:44 ЛС | профиль | цитата
hitman249 писал(а):
решение с боку, это "простреливать" будущие 30 дней по одному дню, перебором.

А я что, тебе этого не говорил, до того, когда ты первый раз про решение с боку сказал? )
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#30: 2013-09-12 08:56:58 ЛС | профиль | цитата
Вот, используя опыт и совет tsdima
myfunct.rar
hitman249 писал(а):
а что можно понять в 10000111010001 или 98654?
Всё.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1myfunct.rar [1.6KB] [101]
Голосовали:hitman249
Сообщение
...
Прикрепленные файлы
(файлы не залиты)