Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос к Аксакалам :-) / 16 сообщений из 16, страница 1 из 1
31.03.2003, 14:26
    #32130179
Alex_from_Spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Здравствуйте.

Кто-нибудь из опытных пользователей/программистов MS Access может подсказать мне оптимальное решение проблемы? Суть в следующем - в базе данных MS Access международной телефонной компании необходимо создать статистический отчет, который бы показывал, по каким направлениям чаще всего звонят клиенты. В базе имеется таблица, куда пишутся все данные о совершенных звонках с полем Destinaton (набранный номер), а также таблица с международными кодами стран. Так вот мне непонятно, каким образом мне, на основе этих двух таблиц, построить запрос, который бы сравнивал начальные символы поля Destination (текст) из первой таблицы с полем Codes (текст) из второй, отсеивая записи по этим кодам, потому что дальше все понятно - группировка по кодам, подсчет количества звонков при помощи поля МЕМО и вывод результатов запроса в отчет. Или SQL на такое не способен, надо писать процедуру на VBA?

Заранее благодарен за возможную помощь и советы.

P.S. Перелопатил все, что только можно, включая и этот форум - так и не нашел способа решить проблему...
...
Рейтинг: 0 / 0
31.03.2003, 14:37
    #32130194
Sinner
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
ну вообще можно создать запрос, в котором уже отрезать
эти 4 символа, а далее завязываешься уже с этим запросом на сравнение,
а почему бы не отрезать код еще при встаке записи?
...
Рейтинг: 0 / 0
31.03.2003, 14:49
    #32130211
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
проблема решаема!!!\r
\r
начало решения здесь
...
Рейтинг: 0 / 0
31.03.2003, 14:49
    #32130213
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
sorry\r
\r
/topic/15898
...
Рейтинг: 0 / 0
31.03.2003, 14:53
    #32130219
Alex_from_Spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Спасибо, Sinner, но второе, к сожалению, невозможно, т.к. фактически эта таблица представляет собой журнал работы системы и поля ее заполняются аналогично лог-файлу и используются потом в других отчетах. А первое - к сожалению, везде надо отрезать разное количество первых символов, от двух до четырех, так что этот вариант тоже не покатит. Видимо, придется сравнивать значения. А как это грамотно сделать, я без понятия. :-((
...
Рейтинг: 0 / 0
31.03.2003, 15:25
    #32130248
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Погодите, а почему нельзя так:

select * from Table1 where A like (select B from Table2) & "*"

Я не пробовал, но вдруг...
...
Рейтинг: 0 / 0
31.03.2003, 15:30
    #32130250
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
правильно но очень долго...
...
Рейтинг: 0 / 0
31.03.2003, 15:33
    #32130253
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
А так:

select * from Table1 where A like (select B & "*" from Table2)
...
Рейтинг: 0 / 0
31.03.2003, 15:37
    #32130263
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
ну долго!!! пока он проверит все записи из Table2 в соответствии с Table1 да еще и like...
...
Рейтинг: 0 / 0
31.03.2003, 16:08
    #32130318
Alex_from_Spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Спасибо всем за ответы и советы, но что-то ничего у меня так и не работает, ни Ваша подсказка, Boar, ни Ваша, Владимир Саныч. На попытку внесения этих строк, порекомендованных Вами, Boar, в запрос непосредственно в режиме SQL Access пишет сообщение об ошибке (пропущен оператор - какой оператор, и где он пропущен, непонятно...) и отказывается его запускать. А Ваша рекомендация, Владимир Саныч, работает, только после запуска выдается надпись, что подчиненный запрос может сформировать не более одной строки, а по нажатию ОК никакого результата не выдается. Или, может я Вас не понимаю и делаю все неправильно?...
...
Рейтинг: 0 / 0
31.03.2003, 16:12
    #32130325
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Да нет, раз boar говорит, что мой вариант будет работать медленно, то я его снимаю. Нет смысла его отлаживать.

А вообще, странно мне, что даже при наличии индекса не удается ускорить поиск по начальной части строки.
...
Рейтинг: 0 / 0
31.03.2003, 16:31
    #32130353
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
пришли мне урезанную базу и будет видно..
...
Рейтинг: 0 / 0
31.03.2003, 19:38
    #32130524
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Предлагаю сначала сгруппировать по кодам (выборка с одной таблицы), а потом уж по странам.
...
Рейтинг: 0 / 0
01.04.2003, 17:46
    #32131256
Shark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Варианта 2
1) Использовать в запросе VBA(Len и Like)
Where Left(Значение1,Len(Значение2))=Значение2
2) Like
where like Значение1 like (Значение2 + '*')
Другие варианты в голову не пришли.
...
Рейтинг: 0 / 0
01.04.2003, 18:04
    #32131291
Владимир Смирнов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
Код: plaintext
1.
SELECT Calls.*, Codes.Codes
FROM Calls INNER JOIN Codes ON Calls.Destination LIKE Codes.Codes &  "*" 

Здесь Calls - данные о совершенных звонках, Codes - таблица с кодами стран.
А дальше группируйте.
...
Рейтинг: 0 / 0
02.04.2003, 08:40
    #32131471
boar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос к Аксакалам :-)
хмм... че-то сам автор Alex_from_Spb пропал
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос к Аксакалам :-) / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]