Это получилось потому, что все критерии отбора, указанные в одной строке, объединяются оператором AND и в результате Вы получаете только те записи, которые удовлетворяют всем условиям, точнее - одновременно удовлетворяют условиям во всех полях строки. В нашем случае запись должна содержать одну из трех комнат: 101, 201 или 301 и в то же время эти номера должны принадлежать к первой категории. В итоге мы и получили пустую таблицу, т.к. ни одной записи одновременно отвечающей этим двум условиям, у нас нет.
Но совершенно другой результат мы получим, если "П" перенесем строкой ниже (в строку "или"):
У нас в таблице объединились записи, представляющие и номера люкс и номера первой категории. Это произошло потому, что каждая строка в критериях отбора анализируется отдельно и строки объединяются оператором OR. В нашем случае в таблицу попадают записи, в которых есть номера комнат 101, 201, 301 илите номера, которые относятся к первой категории ("П").
Закрыв запрос и вновь открыв его в режиме конструктора, мы увидим, что буква "П" не переходит из строки "или" в строку "Условие отбора".
Чтобы еще лучше понять механизм отбора записей, объединим "П" и "Л" оператором OR:
Поле |
Номер комнаты |
Код категории |
Условие отбора |
101 Or 201 Or 301 |
Л Ог П |
Или |
Выполнив запрос, мы увидим в таблице только комнаты категории люкс. Мы уверены, что следующее логическое выражение, объясняющее результат, не вызовет у Вас ни малейшего недоумения:
(101 OR 201 OR 301) AND (Л OR П)
Действительно, в правой скобке у нас множество комнат, принадлежащих категориям люкс и первой, а в левой - множество комнат люкс. Объединив эти множества оператором AND, мы, конечно же получаем только множество люкс.
Теперь добавим в запрос таблицу "Гости", чтобы посмотреть, кто же живет в номерах люкс. При этом уберем условие отбора из поля "Номера комнат", а оставим только "Л" в столбце "Код категории", одновременно запретив вывод этого поля на экран (убрав крестик в соответствующей строке).
В третий столбец запроса занесем поле "Фамилия" из таблицы "Гости" и выполним запрос. Мы увидим, что записей не три, а две. Запись, соответствующая 101-й комнате, пропала. Сейчас пропажа записи для нас уже не тайна: т.к. в 101-й комнате никто не живет, то поля "Фамилия", соответствующего этой комнате, нет, т.е. значение этого поля для записи со 101-й комнатой ложно. А значит и вся запись ложна (т.к. как мы знаем, что критерии отбора в строке соединяются оператором AND), поэтому и не выводится на экран.
Чтобы запись со 101-й комнатой вновь появилась, поселите в эту комнату своего лучшего друга. При этом у нас к Вам просьба не заносить друга в таблицу "Гости" (конечно же, это не требование администрации гостиницы, не позволяющей вдвоем проживать в одноместном номере, а наше пожелание не вносить лишней путаницы в базу данных на этапе ее изучения).
Выполнив запрос, мы увидим три записи - друг пока в своем номере.
Мы можем увидеть запись со 101-й комнатой в нашем запросе и не поселяя в этот номер своего друга.
Обратим внимание на связь между таблицами. Таблицы связывают линии, не имеющие на своих концах никаких значков, кроме маленьких точек. Это означает, что объединяются только те записи, в которых связанные поля обеих таблиц совпадают. Вы можете убедиться в этом, щелкнув правой кнопкой мыши на линии связи и в появившемся контекстно-зависимом меню выполнить команду "Параметры объединения". В открывшемся окне Вы увидите, что установленная по умолчанию первая опция и задает такие параметры объединения полей двух таблиц.
Теперь вполне понятно, что мы не видели в запросе третьей записи - поля с такими данными (101) в таблице "Гости" не было. А теперь в окне "Параметры объединения" зададим опцию, когда объединяются все записи из таблицы 'Этажи" и только те записи из таблицы "Гости", в которых связанные поля совпадают. У линии связи появляется стрелка, направленная в сторону таблицы "Гости".
Выполнив запрос "Люкс", Вы увидите, что даже не поселяя друга, все три номера люкс будут выведены. Но если друг не живет в номере, то поле в столбце "Фамилия" будет конечно пусто. После этого вновь поселите друга в его номер.
Не огорчайтесь, если Вам что-то пока неясно в механизме связи в Access - мы еще не раз вернемся к нему. А сейчас нам пора расставаться с запросом "Люкс". Но не удаляйте его, он нам еще пригодится.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.