Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

Качай мускулы

Степан Ильин aka Step

Хакер, номер #075, стр. 075-028-6


Второй нюанс: использование сразу нескольких таблиц в качестве источника данных для запроса возможно только при наличии установленной связи между ними. Ты же еще не забыл о первичном ключе, верно? Сейчас без него ну никак не обойтись.

Сейчас приведу тебе реальный пример запроса. По таблицам orders и customers установим всех покупателей приобретенного товара:

SELECT customers.FirstName,customers.LastName,orders.Product FROM customers, orders

WHERE orders.customer=customers.ID

Теперь чуть усложним задачу и с помощью запроса выясним, кто купил куклу.

SELECT customers.FirstName,customers.LastName,orders.Product FROM customers, orders

WHERE orders.customer=customers.ID and orders.Product=’Кукла’

Зачем Бублик купил себе куклу, история умалчивает. Зато документация по SQL гласит, что приведенный способ объединения таблиц отнюдь не единственный. То же самое, например, можно выполнить с помощью команды JOIN:

SELECT customers.FirstName,customers.LastName,orders.Product FROM customers INNER JOIN orders ON orders.customer=customers.ID

Причем этот вариант даже предпочтительнее. Во-первых, он интуитивно понятнее и сразу же указывает на слияние таблиц. Ну а во-вторых, команда JOIN предлагает более широкие возможности. Слово INNER, которое ты, возможно, даже не заметил, указывает, что с обеих таблиц должны быть возвращены только те записи, которые поставлены между собой в соответствие. Если бы на его месте стояло слово LEFT, то результат запроса был бы иным. LEFT JOIN (ну или RIGHT JOIN) возвращает все строки первой (левой) таблицы, даже если часть или все из них не имеют связи со второй (правой) таблицей. За счет возможной несогласованности полученная таблица может содержать некоторое количество пустых ячеек.

Помимо всего прочего, язык SQL поддерживает еще и банальное объединение таблиц. Так, используя команду UNION, можно к результату одного запроса присоединить результат другого, получив тем самым одну большую таблицу. Естественно, возвращаемые столбцы должны обязательно иметь один и тот же тип данных. В этом, собственно, и заключается вся специфика использования данной конструкции. В общем виде ее синтаксис выглядит следующим образом: <SQL-запрос 1> UNION <SQL-запрос 2>.

Не запросом единым

SQL со временем преобразовался. Сейчас это больше чем язык запросов. С его помощью можно создавать таблицы, добавлять в них новые и удалять устаревшие данные. Вручную, правда, делать это довольно геморройно, поэтому я предпочитаю использовать сторонние средства. Но если ты всерьез заинтересовался такими возможностями SQL, то тебе сам Бог велел посетить сайты, ссылки на которые я привел в боковых сносках. А еще лучше приобрести соответствующую литературу.

Специальные функции

AVG(<поле>) возвращает среднее значение всех выбранных значений <поля>.

COUNT(<поле>) возвращает количество ненулевых элементов <поля>.

Назад на стр. 075-028-5  Содержание  Вперед на стр. 075-028-7