Вот такая задача (см. аттач). Честно говоря не очень понимаю что делать.
Подскажите в какую сторону вообще копать с таким вопросом.
SQL, Вывести календарь |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
SQL, Вывести календарь |
klem4 |
Сообщение
#1
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Вот такая задача (см. аттач). Честно говоря не очень понимаю что делать.
Подскажите в какую сторону вообще копать с таким вопросом. Эскизы прикрепленных изображений -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#2
|
Гость |
Цитата в какую сторону вообще копать с таким вопросом. Ежели SQL Аксессовский - можно попробовать копать в сторону Pivot Tables (запросы вида Transform ... Select ... From ... Pivot ...) и CrossTab Queries (потом посмотришь, как это выглядит в SQL-View "и всего делов" (С)) Насколько я помню, в ANSI SQL этого нет, возможно там есть нечто другое для организации перекрестных запросов. |
klem4 |
Сообщение
#3
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Может как-то можно сделать средствами MySQL ?
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#4
|
Гость |
Вот такой запрос:
SQL SELECT Выводит вот такое:Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=1,table1.id,Null)) AS Sun, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=2,table1.id,Null)) AS Mon, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=3,table1.id,Null)) AS Tue, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=4,table1.id,Null)) AS Wed, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=5,table1.id,Null)) AS Thu, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=6,table1.id,Null)) AS Fri, Sum(IIf(DatePart("w",DateSerial(Year(Date()),Month(Date()),table1.id))=7,table1.id,Null)) AS Sat FROM Table1 GROUP BY DatePart("ww",DateSerial(Year(Date()),Month(Date()),table1.id)) ORDER BY DatePart("ww",DateSerial(Year(Date()),Month(Date()),table1.id)); Можно попробовать и "перевернуть" табличку... А насчет MySQL - тоже можно, см. здесь: http://en.wikibooks.org/wiki/Programming:MySQL/Pivot_table (поправил запрос, забыл впечатать Group By) Сообщение отредактировано: volvo - |
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Спасибо, появилась собственная мысль, если получится обязательно выложу.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
Сообщение
#6
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
В общем пока вот что выходит, этот вариант на 2008г (на любой сделать легко, пока лень править константы) + не пойму пока как названия дней недели присандалить.
SQL select if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 1 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 1 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 2 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 2 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 3 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 3 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 4 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 4 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 5 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 5 - 1 day), '') as '', if (month('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 6 - 1 day) = month(now()), dayofmonth('2008-01-01 00:00:00' + INTERVAL (week(now()) + id) * 7 + 6 - 1 day), '') as '' from tbl; в таблице TBL одно поле id, забито значениями от 0 до 5 результат вида: Код +------+------+------+------+------+------+------+ | | | | | | | | +------+------+------+------+------+------+------+ | | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | 31 | | | | | | | | | | | | +------+------+------+------+------+------+------+ Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
Сообщение
#7
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
таблицак tbl - одно поле - id, значения от 0 до 4 всключительно. Почему-то код отрабатываеткорректно только на 2008 год ... SQL select if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 - 1 day), '') as 'Mon', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 1 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 1 - 1 day), '') as 'Tue', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 2 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 2 - 1 day), '') as 'Wed', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 3 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 3 - 1 day), '') as 'Thu', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 4 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 4 - 1 day), '') as 'Fri', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 5 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 5 - 1 day), '') as 'Sat', if (month(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 6 - 1 day) = month(now()), dayofmonth(concat(year(now()), '-01-01 00:00:00') + INTERVAL (week(now()) + id) * 7 + 6 - 1 day), '') as 'Sun' from tbl; Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
Сообщение
#8
|
Гость |
Цитата Почему-то код отрабатываеткорректно только на 2008 год ... Хм... У меня что-то твой код показывает только нижние три строки, числа с 1-го по 13-е никак не хочет отображать... |
klem4 |
Сообщение
#9
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
У меня тоже, чот я намудрил, надо разобраться.
нашел баг кажется. Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
Сообщение
#10
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
SQL select if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 7 * id day), '') as Mon, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 1 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 1 - 7 * id day), '') as Tue, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 2 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 2 - 7 * id day), '') as Wed, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 3 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 3 - 7 * id day), '') as Thu, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 4 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 4 - 7 * id day), '') as Fri, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 5 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 5 - 7 * id day), '') as Sat, if (month(now()) = month(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 6 - 7 * id day), dayofmonth(concat(year(now()), '-', month(now()), '-01 00:00:00') - INTERVAL weekday(concat(year(now()), '-', month(now()), '-01 00:00:00')) - 6 - 7 * id day), '') as Sun from tbl; В tbl: 0 1 2 3 4 5 Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 8.05.2024 9:33 |