Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Форматирование запроса SQL (http://forum.oszone.net/showthread.php?t=123275)

ValVlaGen 18-11-2008 13:34 955885

Форматирование запроса SQL
 
Поскажите плиз. Допустим имеется таблица d с полем date типа date вот. Каким образом можно представить все эти дни в виде таблицы из 7 столбцов, где каждая строка представляет собой неделю от понедельника до воскресенья. ну что то типа:

Пон. Втор. Среда. Четв. Пятн. Суб. Вос.
null null null 1950-05-01 1950-05-02 1950-05-03 1950-05-04

Заранее благодарен за ответы.

Coutty 18-11-2008 14:34 955938

Может быть что-то вроде этого:
Код:

SELECT `date` AS 'Четв.' FROM `d` WHERE DATEDIFF(day, '1950-05-01', `date`)%7=0;
Здесь только для одного дня недели, но уж если будет работать, то сами разберётесь как все семь вывести :)
Функция DATEDIFF() в теории считает количество (дней в данном случае) между первой и второй датой. Далее - берём остаток от деления на 7. Если равен нулю, то такой-то день (хз какой, может быть четверг, может, понедельник или что-то другое. Там видно будет), если единице - следующий .
Подробнее про DATEDIFF().

Проверить не могу, т.к. нет ни MS-SQL-сервера, ни желания заполнять таблицу значениями.

ValVlaGen 18-11-2008 15:08 955965

Спасибо конечно, но что то подобное я могу сам написать причем еще проще:

Код:

SELECT date AS 'Четв.' FROM d WHERE DATEPART(dw,d.date)=3 ;
Меня же как раз интересует вопрос представления всех этих дней в виде таблицы:

Пон. Втор. Среда. Четв. Пятн. Суб. Вос.

null null null 1950-05-01 1950-05-02 1950-05-03 1950-05-04
1950-05-05 1950-05-06 1950-05-01 1950-05-07 1950-05-08 1950-05-09 1950-05-10
и т.д.

Вот в чем дело. Все еще жду ваших предложений.

Busla 18-11-2008 19:02 956156

ValVlaGen, а смысл? - сервер возвращает данные. За их красивое отображение отвечает клиент.

ValVlaGen 19-11-2008 07:31 956581

Цитата:

Цитата Busla
ValVlaGen, а смысл? »

Классное решение!! :biggrin: :up

vadimiron 19-11-2008 10:10 956685

ValVlaGen,
Решайте клиентов.... Пусть база вернёт все даты, но отсортированные по возрастанию - и теперь достаточен всего один while, чтобы построить нужную вам таблицу (так как даты отсортированы - там точно идут дни по порядку)

Delirium 24-11-2008 01:24 961520

ValVlaGen, ваш запрос "перевернуть" на стороне сервера не получится, подобное "транспонирование" можно, как уже указали, сделать только на стороне клиента, при отображении.

ValVlaGen 24-11-2008 09:44 961688

Я уже решил данную задачу на стороне сервера. У меня другой вопрос как можно написать запрос на изменение порядка слов на обратный. Например есть текстовое поле
Код:

Мама мыла раму
, а на выходе запрос выдавал бы
Код:

раму мыла Мама
. Высказывайте свои идеи господа.

Delirium 25-11-2008 00:47 962634

Цитата:

Цитата ValVlaGen
У меня другой вопрос как можно написать запрос на изменение порядка слов на обратный »

ValVlaGen, а зачем эти танцы с бубном на сервере? Зачем лишний раз насиловать, не проще на клиенте это сделать? Ваш вариант возможно сделать при использовании процедуры или самописной функции, но зачем?

ValVlaGen 26-11-2008 08:52 963816

Цитата:

Цитата Delirium
ValVlaGen, а зачем эти танцы с бубном на сервере? »

Нет ну какие умные и отзывчивые люди мне отвечают. Вместо конкретной помощи в решении поставленной задачи, мне говорят: Да зачем тебе это?

Ну правда классное решение. Дизреспект за такие ответы ребята. Мне помошь нужна, а не нравоучения. Если не знаете как это сделать, ну правда не пишите нечего тогда.

Delirium 26-11-2008 08:58 963821

ValVlaGen, никто не нравоучал вас. Просто, хотя бы примерно зная, для чего такие сложности, и ответы могут быть разными. Один вариант я вам уже привел, но, видимо, дальше бубна вы не читали.
Создаете процедуру, в ней 2 переменных - в первой весь текст, во вторую будут падать "слова". Запоминаем позиции пробелов в цикле и потом выдергиваем слова с конца до начала, записывая результат во вторую переменную. Итоговый результат можно ложить куда угодно. Это в теории. Если теория подойдет, могу создать примерную процедуру.

ValVlaGen 26-11-2008 12:27 964000

Стоит задача написать этот механизм изменения порядка слов именно с помошью одного только запроса.


Время: 14:48.

Время: 14:48.
© OSzone.net 2001-