КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Создание сложных наборов данныхОсталось изменить страницу Guestbook_table.asp так, чтобы она отображала не только содержимое поля content, но и содержимое поля sign. Давайте сделаем это и попутно изучим построение сложных SQL-запросов и создание сложных наборов данных. На первый взгляд, задача, стоящая перед нами, очень проста. В самом деле, мы уже знаем, как создать динамический текст и привязать его к полю набора данных. Мы уже, собственно, выполнили это, когда делали страницы Guestbook.asp и Guestbook_table.asp. Теперь же нам ничего не стоит добавить в повторяющуюся область последней страницы новый динамический текст, привязанный к полю Sign. Давайте так и сделаем. И что получится в результате? А вот что. Когда мы откроем доработанную страницу Guestbook_table.asp в Web-обозревателе, то увидим, что вместо слов "Положительно", "Отрицательно" или "Нейтрально" стоят цифры от 1 до 3. Почему? Да потому, что созданное нами поле sign имеет числовой тип, и именно число, находящееся в нем, отображается на странице. Но мы-то хотим увидеть слова, а не цифры! Что делать? Создать сложный набор данных, извлекающий данные не из одной, а из нескольких таблиц. А для этого нам придется построить сложный SQL-запрос, и сделать это нужно вручную. Откройте страницу Guestbook_table.asp и переключитесь на панель Bindings.Дважды щелкните по пункту Recordset (Guestbook),представляющему созданный нами ранее простой набор данных. (Простым набором данных называется тот, который извлекает данные из одной таблицы.) На экране появится диалоговое окно Recordset.Щелкните по кнопке Advanced— и это окно изменит свой вид (рис. 17.11). Рис. 17.11. Диалоговое окно Recordset(расширенное) В этом диалоговом окне нам понадобятся поле ввода SQL,список Database Itemsи кнопки SELECT, WHERE и ORDER BY.Многоколоночный список Variablesи все относящиеся к нему кнопки мы пока трогать не будем. В поле ввода SQL,как вы поняли, вводится текст SQL-запроса. В настоящее время он таков: SELECT * FROM Guestbook Выше мы уже рассмотрели этот запрос по частям, поэтому не будем здесь повторяться. Напомним только, что этот запрос извлекает все поля всех записей из таблицы Guestbook. Поскольку мы хотим создать новый запрос SQL, то давайте сначала удалим все содержимое поля ввода SQL. И начнем, что называется, с чистого листа. Прежде всего поочередно откроем ветви Tables и Guestbookи выберем пункт Contentв списке Database Items.Далее нажмем кнопку SELECT,чтобы поместить в поле ввода SQLключевое слово SELECT с выбранным нами полем content. В поле ввода SQL появится такой код: SELECT Content FROM Guestbook Затем поместим текстовый курсор после слов "SELECT Content", откроем ветви Tablesи Signsи выберем пункт Desc.Опять нажмем кнопку SELECT.Код примет следующий вид: SELECT Content, Desc FROM Guestbook, Signs Как видите, мы извлекаем данные уже из двух таблиц: поле Content из таблицы Guestbook И ПОЛ6 Desc ИЗ Таблицы Signs. Осталось только добавить условие, связывающее запись таблицы Guestbook с записью таблицы signs. Для этого добавим условие выборки записей. Выберем пункт Signв подветви Guestbookветви Tablesи нажмем кнопку WHERE.Код'в поле ввода SQL опять изменится: SELECT Content, Desc FROM Guestbook, Signs WHERE Sign Поставим текстовый курсор после текста "WHERE Sign", введем знак "=", выберем пункт IDветви Signsв ветви Tablesи опять нажмем кнопку WHERE.Код в поле ввода SQLпримет свой окончательный вид: SELECT Content, Desc FROM Guestbook, Signs WHERE Sign=ID Здесь ключевое слово WHERE обозначает условие отбора записей. А код sign=io показывает, что в набор попадут только те записи таблицы Guestbook, значения поля sign которых равно значению поля ID соответствующей записи таблицы signs. Чтобы проверить созданный SQL-запрос, нажмите кнопку Test.Если он правилен, на экране появится диалоговое окно Text SQL Statement,содержащее записи созданного набора данных. Нажмите кнопки ОКобоих диалоговых окон. И на всякий случай сохраните страницу. Сложный набор данных, извлекающий записи из двух таблиц, нами создан. Этот набор содержит два поля: content (содержимое записи гостевой книги), взятое из таблицы Guestbook, и Desc (оценка сайта посетителем), взятое из таблицы signs. Что теперь? Может, создать новый динамический текст и привязать его к полю Desc? Можно, конечно. Но мы поступим по-другому. Как? Сейчас увидите.
|