Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 203
от 16.01.2007, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 398, Экспертов: 44
В номере:Вопросов: 1, Ответов: 5


Вопрос № 70448: Здравствуйте, подскажите кто сможет. Есть таблицы Список и Данные. В таблице Данные поля Код, Год, I кв, II кв, III кв, IV кв. Необходимо выбрать данные за кокой-то период (например с IV кв 2000 г по III кв 2002 г). Кто подскажет как это реализовать....

Вопрос № 70.448
Здравствуйте, подскажите кто сможет. Есть таблицы Список и Данные. В таблице Данные поля Код, Год, I кв, II кв, III кв, IV кв. Необходимо выбрать данные за кокой-то период (например с IV кв 2000 г по III кв 2002 г). Кто подскажет как это реализовать.
Заранее благодарю.
Отправлен: 11.01.2007, 11:41
Вопрос задала: КЕВ (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PaVeL_Ekt
Здравствуйте, КЕВ!

Надо преобразовать 4 кв. 2000 г. в формат даты (01.09.2000)
3 кв. 2002 года соответственно (01.06.2002)

по функциям посмотрю и напишу на минифорум
---------
Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: Студент)
Ответ отправлен: 11.01.2007, 11:57

Отвечает: Архангельский Андрей Германович
Здравствуйте, КЕВ!
1) Какая-то странная структура - хотелось бы подробное описание таблицы
2) Выборка в диапазоне выполняется оператором :

where Fild1 BETWEEN data1 and data2

3) Для выборки из даты квартала существуют различные функции зависящие от реализации СУБД. НАпример, в Firebird это функция f_Quarter, которая выдает номер квартала в году
---------
Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 11.01.2007, 12:24

Отвечает: Tek
Здравствуйте, КЕВ!
Если я правильно понял объяснения, то - суперская компоновка таблицы. Тот гений, что ее разрабатывал, что-нибудь вааще о нормализации хотя бы слышал. Но это эмоции.
Для последующего использования например в агрегатных функциях как вариант можно использовать union по каждому кварталу:
select year, I from t where year=2001 or year=2002 UNION ALL
select year, II from t where year=2001 or year=2002 UNION ALL
select year, III from t where year=2001 or year=2002 UNION ALL
select year, IV from t where year=2000 or year=2001
---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 6-ой класс)
Ответ отправлен: 11.01.2007, 12:27

Отвечает: Grigory
Здравствуйте, КЕВ!
Для реализации такого поиска Вам нужна немного другая структура таблицы Данные:
Код
Год
Квартал

Таким образом, для того, чтобы выбрать данные за определенный период, Вам надо будет указать Год и Квартал начала периода и конца периода, за который Вы хотите найти данные. Тогда запрос будет примерно такой:

SELECT * FROM Данные WHERE Год = 2005 AND Квартал between 2 and 4 - этот запрос вам вернет данные о периоде начиная с 2 квартала 2005 года и кончая 4 кварталом 2005 года.
Ответ отправил: Grigory (статус: 10-ый класс)
Ответ отправлен: 11.01.2007, 17:48

Отвечает: Игорь Елизаров
Здравствуйте, КЕВ!
у нас в системе, например, реализовано следующим образом.
отчетные периоды нумеруются код =год + номер отчетного периода, получается обычное целое число,а дальше уже обычный отбор

select * from table where period >=20004 and period <= 20023

На самом деле удобно еще хранить дату начала и окончания периода.
Это позволит сразу определить, к какому отчетному периоду относится та или иная дата.

С уважением, Игорь
Ответ отправил: Игорь Елизаров (статус: 9-ый класс)
Ответ отправлен: 11.01.2007, 23:07


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.40 beta от 14.01.2007
Яндекс Rambler's Top100

В избранное