Модераторы: Akina
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Отбор данных... 
:(
    Опции темы
x_Coder
  Дата 4.2.2004, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



Я пишу программу на VisualBasic 6.
Использую бузу Access (.mdb).

Так вот в чем, собственно, вся загвоздка.

У меня есть таблица Clients. В ней содержится информация про посетителей гостиницы.
Структура таблицы следующая:
_________________________________________
Id - int PRIMARY KEY - (номер)
Name - Text - (имя)
Surname - Text - (фамилия)
Second_name - Text - (отчество)
Country - Text - (страна)
City - Text - (город)
Passport_number - Text - (номер паспорта)
Date - Date/Time - (дата поселения)
________________________________________

Теперь предположим мне нужно создать отчет за месяц.
В отчет должна помещаться информация про 10 самых частых посетителей.
Каким образом можно найти среди всех только десять ? Какой запрос нужно для этого сформировать?

И второе. Допустим мне нужно создать отчет в котором будет выведена информация про количество людей из каждой
страны и города. Примерно так:

Россия - Москва - 100 человек
Киев - Украина - 253 человека
...................................................
Всего 353 человека

Какой запрос нужно для этого сформировать?
Ясно, что здесь нужно будет использовать что-то вроде следующего WHERE City = 'Город' AND Country = 'Страна'

Заранее благодарен, x_Coder!
PM MAIL   Вверх
AntonSaburov
Дата 4.2.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Если мы считаем, что Name, Surname и Passport_number однозначно определяют человека, то так:

SELECT TOP 10 COUNT(*), Name, Surname, Passport_number FROM <table>
GROUP BY Name, Surname, Passport_number ORDER BY 1 DESC;
PM MAIL WWW ICQ   Вверх
x_Coder
Дата 4.2.2004, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



Что ты имееш ввиду однозначно.
В таблице посетитель может встречаться несколько раз.
Данные идут следующим образом

1 Иванов Петр Иванович
2 Петров Сергей Владимирович
3 Чумак Ирина Казимировна
4 Суржикова Алена Трефилиевна
.......
N Петров Сергей Владимирович

То есть записи как бы повторяются, но у них, как правило, даты разные.
PM MAIL   Вверх
AntonSaburov
Дата 5.2.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
Что ты имееш ввиду однозначно.


Это значит, что это все один и тот же человек. А определять это только по ФИО не разумно. Даже в одном городе может быть несколько человек с одним и тем же ФИО. А вот номер паспорта скорее всего даст такую гарантию.
Просто группировать надо так, чтобы быть уверенным, что ты сгруппируешь данные ТОЛЬКО по одному человеку.
PM MAIL WWW ICQ   Вверх
x_Coder
Дата 9.2.2004, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 26.1.2004

Репутация: нет
Всего: нет



А как же такое сделать?

Допустим мне нужно создать отчет в котором будет выведена информация про количество людей из каждой
страны и города. Примерно так:

Россия - Москва - 100 человек
Киев - Украина - 253 человека
...................................................
Всего 353 человека


PM MAIL   Вверх
AntonSaburov
Дата 10.2.2004, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Цитата
Допустим мне нужно создать отчет в котором будет выведена информация про количество людей из каждой страны и города

Значит группируешь по городам. Или группируешь по странам. Но одновременно не получится. Город же более мелкая единица группировки - значит только по ней. Ты можешь потом такой список отсортировать по стране и получить некоторое подобие группировки по стране.
И если ты используешь какой-то репортер (библиотека для сотждания отчетов), то там часто есть возможность группировать по нескольким полям. Тут как раз и получишь группировку по стране.

Например:

Город 1 - 12
Город 2 - 23
Город 3 - 20
Россия - 55
Город 4 - 15
Город 5 - 12
Украина - 27

Т.е. получается как-бы внешняя группировка - кроме городов уже сам репортер группирует еще и по странам.
PM MAIL WWW ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.