Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2009, 12:20   #1
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию Дата и запрос на выборку

Есть БД по музыкальным произведениям, в ней таблица со списком композиторов и их датами рождения и смерти.
Даты рождения и смерти находятся в полях с текстовым значением (понимаю, возможно не верно, но у одного композитора стоит просто год рождения/смерти "1990 год", у второго известны и день и месяц и год когда он родился и умер "16 ноября 1974 года", поэтому и использовалось текстовое поле, ибо с Дата/время такое не прокатило), из всей этой массы живых и мертвых композиторов надо выбрать "Самых молодых", т.е. создать запрос на их выборку.
Возможно ли такое сделать с текстовым полем? Если да, то подскажите как? А то не хочется оставлять только года рождения/смерти

P.S. Желательно для Access 2007
Tanilita вне форума Ответить с цитированием
Старый 17.11.2009, 18:27   #2
Abrakadabra
Форумчанин
 
Регистрация: 26.04.2008
Сообщений: 487
Радость

Функцию нужно делать, которая попытается "разобраться" с этими записями. Прежде чем ее делать, нужно систематизировать данные по группам\способу ввода.
Да и неужели так много композиторов, что невозможно исправить ошибки вручную и привести значения этого поля к соответствующему типу?
Abrakadabra вне форума Ответить с цитированием
Старый 17.11.2009, 19:58   #3
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию

Ууу... слова "Функция" не для моей блондинистой головы
Композиторов немного, просто хотелось "как по красивее", а получилось как всегда :D
Хотя, стоп, нету ни какой функции типо что бы искала в записи значение ввиде "0000" и выводило ее max значение? (Эт вопрос засыпающей блондинки, ответьте просто да/нет)
Tanilita вне форума Ответить с цитированием
Старый 18.11.2009, 07:51   #4
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию

Так-с, перенесла их года рождения в числовое значение...
Из таблицы выбрала поля: ФИО (текст, ключевое) и Дата рождения (число), Третья графа с датой смерти, думаю, не нужна.
Под полем "Дата рождения" в условии отбора пишу "Max" - на меня ругается акцесс ошибкой "Несоответствие типов данных".

Пробовала вычисляемое поле: Год Рождения:Max([Композитор]![Дата рождения]). Акцесс сматерился на поле "ФИО", якобы оно не включается в часть статистической функции или группы.

Вопрос, что я не так делаю???

Последний раз редактировалось Tanilita; 18.11.2009 в 07:54.
Tanilita вне форума Ответить с цитированием
Старый 18.11.2009, 09:47   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
надо выбрать "Самых молодых", т.е. создать запрос на их выборку.
А сколько именно "молодых" надо выбрать?

а вообще, мне кажется с MAX вы не в ту сторону копаете.
имхо такой запрос решает Вашу задачу:
Код:
SELECT TOP 3 Композитор.*
FROM Композитор
ORDER BY Композитор.[Дата рождения] DESC;
выберёт 3-х "самых молодых"
p.s. запрос можно ввести, если в окошке ввода запроса нажать правой кнопкой мышки и выбрать в выпавшем меню "Режим SQL"
и там в окошке редактора ввести текст запроса...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.11.2009, 13:10   #6
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А сколько именно "молодых" надо выбрать?
а вообще, мне кажется с MAX вы не в ту сторону копаете.
имхо такой запрос решает Вашу задачу:
Код:
SELECT TOP 3 Композитор.*
FROM Композитор
ORDER BY Композитор.[Дата рождения] DESC;
выберёт 3-х "самых молодых"
p.s. запрос можно ввести, если в окошке ввода запроса нажать правой кнопкой мышки и выбрать в выпавшем меню "Режим SQL"
и там в окошке редактора ввести текст запроса...
Надо выбрать столько, сколько есть в БД, если один, то одного, если 10, но одного года рождения, то их всех показать...
P.S. У меня код только сортировал их по убыванию...

Последний раз редактировалось Tanilita; 18.11.2009 в 13:56.
Tanilita вне форума Ответить с цитированием
Старый 18.11.2009, 19:53   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Tanilita.
для получения списка "самых молодых" композиторов нужно применить конструкцию с вложеным запросом в условии отбора:
SELECT * FROM Композитор WHERE [Дата рождения]=(SELECT Max([Дата рождения]) FROM Композитор)
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 19.11.2009, 05:35   #8
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Tanilita.
для получения списка "самых молодых" композиторов нужно применить конструкцию с вложеным запросом в условии отбора:
SELECT * FROM Композитор WHERE [Дата рождения]=(SELECT Max([Дата рождения]) FROM Композитор)
Евгений.
Спасибо. Осталось разобраться куда это писать (дополнительное поле выдало ошибку )
Tanilita вне форума Ответить с цитированием
Старый 19.11.2009, 06:46   #9
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Tanilita.
где Вы нашли "дополнительное поле"(?), эта конструкция запроса не создает ничего "дополнительного". "разобраться куда это писать ..." можно переклюючив в меню Вид построитель запросов из режима "Конструктор" на "Режим SQL", туда и помещается тело (текст) SQL конструкции.
Возможно Вы это знали и была другая причин вопроса, но влюбомм случае важен не способ получения, а сам результат, не так ли.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 19.11.2009, 17:48   #10
Tanilita
Пользователь
 
Аватар для Tanilita
 
Регистрация: 17.11.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте Tanilita.
где Вы нашли "дополнительное поле"(?), эта конструкция запроса не создает ничего "дополнительного". "разобраться куда это писать ..." можно переклюючив в меню Вид построитель запросов из режима "Конструктор" на "Режим SQL", туда и помещается тело (текст) SQL конструкции.
Возможно Вы это знали и была другая причин вопроса, но влюбомм случае важен не способ получения, а сам результат, не так ли.
Евгений.
Была бы рядом, расцеловала бы *Целующий смайлик* Огромное спасибо...
Я просто тормознула, я колонки переименовала у себя в таблице (да, я ступила, бывает ) и с утра еще не очень хорошо представляла, что такое SQL... Все было так легко и просто...
Тему можно считать закрытой... Цель достигнута... Большое спасибо Евгению.
Tanilita вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос на выборку МаришаГ Microsoft Office Access 5 21.08.2009 23:46
Запрос на выборку + сумма EugeneIsmatulin SQL, базы данных 3 16.06.2009 15:08
простейший запрос на выборку kate158 БД в Delphi 2 13.05.2009 14:33
Запрос на выборку Ruska882009 Microsoft Office Access 2 26.02.2009 20:39
в БД есть запрос 6 (на выборку) s1a9s8h6a БД в Delphi 12 02.01.2009 00:48