Приднестровская поддержка XOOPS
Выполнить запрос позволяет SQL-команда
SELECT <Поле1>, <Поле2>, …
FROM <Имя таблицы>
[ WHERE <Условие1> ]
[ GROUP BY <Имя поля1> ] [ HAVING <Условие2> ]
[ ORDER BY <Имя поля2> [DESC]]
[ LIMIT <Начало>, <Количество записей> ]
SQL-команда SELECT ищет все записи в таблице <Имя таблицы>, которые удовлетворяют выражению <Условие1>. Если конструкция WHERE <Условие1> не указана, то будут возвращены все записи из таблицы <Имя таблицы>. Вместо перечисления полей можно указать символ *. В этом случае будут возвращены все поля.
Найденные записи при указанной конструкции ORDER BY <Имя поля2> сортируются по возрастанию. Если в конце указано слово DESC, то записи будут отсортированы в обратном порядке.
Для начала выберем все записи из таблицы City, но только из одного поля:
SELECT `City` FROM `City`;
В результате будут возвращены только названия городов:
Санкт-Петербург
Москва
Если вместо названия поля указать символ *, то будут возвращены все поля:
SELECT * FROM `City`;
Этот запрос вернет
1 Санкт-Петербург
2 Москва
Теперь выведем названия городов по алфавиту:
SELECT * FROM `City` ORDER BY `City`;
Теперь названия будут отсортированы:
2 Москва
1 Санкт-Петербург
А теперь выведем только город с индексом 2:
SELECT * FROM `City` WHERE `id_City`=2;
В результате мы получим только один город:
2 Москва
Если требуется, чтобы при поиске выдавались не все найденные записи, а лишь их часть, то нужно использовать параметр LIMIT. Этот параметр удобен при выводе большого количества записей. Например, есть каталог из 2000 запсей. Вместо того чтобы выводить его за один раз, можно выводить его частями, скажем, по 25 записей за раз. В параметре LIMIT задается два значения <Начало> и <Количество записей>:
SELECT * FROM `City` ORDER BY `City` LIMIT 0, 25;
Обратите внимание, что первая запись имеет индекс 0. Если бы в таблице City было бы более 25 записей, то мы бы получили только первые 25.
Кроме того, команда SELECT позволяет использовать следующие функции, называемые агрегатными функциями:
□ COUNT(<Поле>) — количество непустых (то есть не имеющих значение NULL) записей в указанном поле;
□ MIN(<Поле>) — минимальное значение в указанном поле;
□ MAX(<Поле>) — максимальное значение в указанном поле;
□ SUM(<Поле>) — сумма значений в указанном поле;
□ AVG(<Поле>) — средняя величина значений в указанном поле.
Выведем общее количество заказов:
SELECT COUNT(`id_Orders`) FROM `Orders`;
Этот SQL-запрос выведет 5. Теперь найдем минимальную сумму заказа:
SELECT MIN(`Sum`) FROM `Orders`;
В результате мы получим 3100. А теперь выясним максимальную сумму заказа:
SELECT MAX(`Sum`) FROM `Orders`;
И получим ответ 7200.
Для получения более подробной информации можно воспользоваться конструкцией GROUP BY. Например, можно посмотреть среднюю сумму покупок каждого покупателя:
SELECT `id_Customer`, AVG(`Sum`) AS s
FROM `Orders`
GROUP BY `id_Customer`
ORDER BY s;
Обратите внимание: мы используем псевдоним для имени поля и по нему сортируем записи от меньшего результата к большему.
Если нужно, например, выбрать клиентов, заказавших больше определенной суммы, то можно воспользоваться конструкцией HAVING. Она выполняет те же функции, что и конструкция WHERE, но только для конструкции GROUP BY.
SELECT `id_Customer`, Sum(`Sum`) AS s
FROM `Orders`
GROUP BY `id_Customer`
HAVING s > 4000
ORDER BY s;
Можно в одном запросе использовать конструкции WHERE и HAVING. В этом случае сперва отбираются записи, указанные в конструкции WHERE, они группируются, и по ним вычисляются агрегатные функции, а затем из результата отбираются лишь те записи, которые удовлетворяют условию в конструкции HAVING.
Отправитель | Нити |
---|
3 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 3 далее... |