Вопрос № 129546: Здравствуйте эксперты.
Дали задание по Экселю, рылся в справке, что-то ничего не нашел.
1) Обьясните как делать запросы.
2) Что значит связать одну таблицу с другой? Как это делается?
Задание из которого у меня возникли эти...
Вопрос № 129.546
Здравствуйте эксперты.
Дали задание по Экселю, рылся в справке, что-то ничего не нашел.
1) Обьясните как делать запросы.
2) Что значит связать одну таблицу с другой? Как это делается?
Задание из которого у меня возникли эти вопросы в приложении..
Отвечает: megaloman
Здравствуйте, Вячеслав Шинкаренко!
Никогда не думал, что из Эксела можно сделать запрос к таблице Эксела. Так что учимся делать вместе!
Для определенности создадим на диске E: папку Delete. Сохраним там две таблицы:
1. Читатели.xls -Там на листе Reader в столбце начиная с клетки A1 поместим заголовок столбца (Читатель) и имена (в общем случае Фамилии И.О., я ограничился именами для краткости)- см. приложение.
2. Выдача книг.xls -Там на листе Komu в столбцах начиная со строки 1 с клетки A1 поместим заголовоки столбца и соответственно в столбцах наименования книг, когда выдана, кому - см. приложение.
Следует заметить, что один и тот же читатель в этих двух таблицах должен поминаться строго одинаково.
*****
Закроем все таблицы. Откроем чистую книгу. Станем на клетку A1.
Данные-Импорт внешних данных-Создать запрос(должна стоять птичка Использовать мастер запросов) -Файлы Excel-ОК-Диски E:, каталоги Delete, имя базы выбрать Читатели.xls -OK
- Параметры - Отображать -поставить все птички (4 шт)-ОК -Увидите в окошке Имеющиеся столбцы и таблицы + Reader$ - Кнопкой > перенесете Столбцы запроса (у нас только один - Читатель)-
-Далее-Далее-Далее до окна заключительный шаг-Сохранить запрос- Запрос из Файлы Excel 0.dqy - Сохранить -
-Вернуть данные в Excel - Готово
Станем на клетку C1. Проделаем аналогичные манипуляции с книгой Выдача книг.xls, запрос сохраним под именем Запрос из Файлы Excel 00.dqy
На листе получили выборки из двух таблиц, что нам, в принципе и не нужно - основной итог этих действий - мы сохранили два запроса, используя которые "на запчасти", чтобы не напутать в синтаксисе команды, создадим свой запрос.
В принципе, приведенный мной этот этап (между *****) можно пропустить, но я счел нужным его привести, чтобы для других аналогичных задач использовать эту методику с минимальными затратами на отладку синтакса.
Закрываем эту книгу, открываем чистую, Станем на клетку A1.
Данные-Импорт внешних данных-Создать запрос(Не должна стоять птичка Использовать мастер запросов)-Запросы-Открыть-Запрос из Файлы Excel 0.dqy
Кнопка SQL - В окне Инструкция SQL помечаем и копируем в буфер (CTRL/C) все что там есть:
SELECT `Reader$`.Читатель
FROM `E:DeleteЧитатели`.`Reader$` `Reader$`
Отмена. Закроем окно Запрос из Файлы Excel 0.dqy. -должно остаться пустое окно Microsoft Query
Файл - Открыть запрос - Запрос из Файлы Excel 00.dqy
Кнопка SQL - В окне Инструкция SQL вставляем из буфера перед имеющимся запросом (CTRL/V) ранее скопированный кусок:
SELECT `Reader$`.Читатель
FROM `E:DeleteЧитатели`.`Reader$` `Reader$`
А вот теперь из этого текста скомпануем свой запрос,используя имеющееся как "запчасти", который и решит нашу задачу:
В окне оставляем только полученный запрос:
SELECT `Reader$`.Читатель, Count(`Komu$`.`Кому выдана`) AS 'Количество книг'
FROM `E:DeleteВыдача книг`.`Komu$` `Komu$`, `E:DeleteЧитатели`.`Reader$` `Reader$`
WHERE `Reader$`.Читатель = `Komu$`.`Кому выдана`
GROUP BY `Reader$`.Читатель
ORDER BY `Reader$`.Читатель
Здесь функция Count подсчитывает, сколько раз каждый из Кому выдано фигурирует в таблице.
GROUP BY отвечает за группировку данных по Читатель
ORDER BY отвечает за то, чтобы результат выводился по алфавиту по столбцу Читатель
Файл - вернуть данные в Excel. Получим искомый результат.
Сохраним таблицу под каким-нибудь именем (Rezult.XLS), выйдем из нее, зайдем заново, станем на A1. Полученные данные на месте! Запомним, сколько у Саша книг.
Откроем книгу Выдача книг.xls. Выдадим Саша еще одну книгу. Сохраним таблицу Выдача книг.xls - Выйдем из нее.
В книге Rezult.XLS - Данные - Обновить данные -получим актуальные данные, сколько кому книг выдано.
Задача, как она поставлена, решена. Но очевидно, не все так хорошо в постановке: я специально в таблице Читатели не помянул читателя Петруччо, а в Выдаче книг выдал ему книгу.
В Rezult его нет.
Я бы обошелся одной таблицей и запрос написал бы следующим образом:
SELECT `Komu$`.`Кому выдана`, Count(`Komu$`.`Наименование книги`) AS 'Количество книг'
FROM `E:DeleteВыдача книг`.`Komu$` `Komu$`
GROUP BY `Komu$`.`Кому выдана`
ORDER BY `Komu$`.`Кому выдана`
Приложение:
--------- Нет времени на медленные танцы
Ответ отправил: megaloman (статус: Студент)
Ответ отправлен: 30.03.2008, 13:40 Оценка за ответ: 5 Комментарий оценки: Вон как это делается оказывается.. Большое спасибо. Сейчас буду пытатся..