|
Выбор результатов вложенного запроса. |
Как раскрутить сайт:Каталог - это...Поисковик - это... Поисковики 1993г Поисковики 1994г Список каталогов Каталоги для PR Каталоги белые Каталоги белые Белые каталоги ссылок Белые каталоги ссылок Каталоги Протокол HTTP 1.1 Сайты сателлиты Yandex бан Ошибки начинающих Ошибки webмастера Что Гугл знает? О сайте из Google robots.txt Социалки Расчет PageRank Как раскрутить сайт Причины игнора сайта Фильтры Гугла Хороший дизайн Залог хорошего сайта Софт вебмастеру Выбрать хостинг Платформы хостинга Виртуальный сервер Продвижение сайта Секреты раскрутки 1 Секреты раскрутки 2 Раскруточные мифы Оптимизация под каталоги Заработать на сайте Размещение банеров Защита сайта Спам в поздравлениях SEO продвижение Раскрутка Дорвеями Секреты Гугла Ссылки google ТОП-10 Сниппеты Ключевые слова Редирект Грязная линковка SEO слэнг Подробно о PR Бан партнерки О поисковых системах Внутренние факторы Внешние факторы Индексация сайта Фильтры Различия поисковых Semonitor Сохранить позиции после редизайна Секреты Гугла |
|
Выбор результатов.
Выбор результатов вложенного запроса SELECT столбцы, (SELECT столбцы FROM таблица) FROM ... Вложенный запрос можно использовать в выражении SELECT, и результаты его выполнения будут возвращены в виде столбца. Подчиненный запрос может возвращать только один столбец, в противном слyчае MysQL сгенерирует сообщение oб ошибке. B приведенном ниже примере в выражении SЕLЕСТ используются два подчиненных запроса. Они возвращают два фрaгмента обобщенной информации. Вложенные запросы выполняют операторы COUNT (*) на разных таблицах, a результаты возвращаются в виде одной строки данных, содержащей два столбца. SELECT (SELECT COUNT(*) FROM person) AS num_person, (SELECT COUNT(*) FROM book) АS num_book; Связанные запросы Если вложенный зaпрос должен обращаться к таблице, которая также указана во внешнем запросе, обработка не может осуществляться так, как описано выше, поскольку невозможно выполнить подчиненный запрос, не зная значения каждой строки таблицы во внешнем запросе. B подобных ситуациях говорят o связанных, или коррелированных вложенных, запросах. B приведенном ниже примере вложенный запрос используется для вычисления последней даты выдачи во временное пользование каждой книги, возвращаемой главным запросом. B данном случае имеет место связанный вложенный запрос, так как внутренний запрос ссылается на таблицу book из главного запроса. Невозможно выполнить вложенный запрос, не зная значение bооk.bооk_id для каждой строки, возвращаемой главным запросом. SELECT title, (SELECT тах(date_1ent) FROM loan WHERE 1oan.book_id = book.book_id) Ао subquery FROM book; Как вы, вероятно, догадались, данный запрос можно сравнительно просто переписать, используя объединение и выражение GROUP ВУ. Очень часто один и тот же запрос можно выполнить различными способами, в зависимости от особенностей использования объединений и подчиненных запросов. B некоторых слyчаях выбор мeтода обработки влияeт на производительность, в частности, связaнные вложенные запросы выполняются очень медленно. Тaким образом, если скорость обработки запроса не устраивает вас, воспользуйтесь другим методом. Использование ключевого слова UNION SELECT столбцы FROM таблица_1 UNION SELECT столбцы FROM таблица_2; Kлючевое слово UNION используется для объединения результатов двух или нескольких запросов в один набор. B приведенном ниже примере запрос возвращает имена авторов, извлеченные из таблицы book, и сведения o тех знакомых, кому книги были даны взаймы, из таблицы person. SELECT author FROM book UNION SELECT name FROM person; Все таблицы, объединенные c помощью оператора UNION, должны возвращать одинаковое количество столбцов. Столбец c именами из первого запроса используется в окончательном наборе результатов. B частности, в данном примере возвращаются имена в столбце c именем author, однако некоторые из этих имен извлечены из столбца person. name. По умолчанию при oбъединении запросов c помощью оператора UN I ON возвращаются только строки, отличающиеся друг от друга. Если вам надо, чтобы возвращалась кaждая строка, следует использовать выражение UNION ALL. B следующем примере выполняются два запроса к таблице book. Первый запрос определяет названия книг, состояние которых считается отличным. Второй запрос находит книги, имя автора которых начинается c буквы "М". SЕLЕСТ title FROM book WHERE соnd = 'mint' UNION ALL SELECT title FROM book WHERE author LIKE 'M%'; Результаты обработки приведены ниже. Поскольку в запросе указаны ключевые слова UNION ALL, название книги In the Night Kitchen выводится дважды, так как она удовлетворяет обоим критериям. Если в том же запросе ограничиться указанием UNION, название каждой книги будет отображаться только один раз.
Спонсор сайта:
Пер. с англ. - М.: ООО "И.Д.Вильямс", 2006. |
Основы MySQL:ВведениеСхема MySQL Управление базами Создание баз Создание таблиц Создание столбцов Идентификаторы Хранение данных Включение даты Импорт данных Включение данных Простые запросы Устранение повторов Обработка значений Значения NULL Обработка данных Оновление значений Безопасность Удаление записей
Спонсор сайта:
Установка паролей Установка привилегий Клиентская часть Параметры соединения MySQL АРI Запросы АРI АРI для Perl РНР АРI Расширенные запросы Ключевое слово JOIN Вложенные запросы Выбор результатов Проблемы MySQL Восстановление базы Частые ошибки Кол-во соединений Подготовка к работе В курс дела Имена столбцов
Реклама:
Внесение данных Внесение данных 2 Особенности таблиц Еще о таблицах |