[16-10-2009] Джо

SELECT - первое знакомство

Выборка данных из баз данных MySQL осуществляется запросами с оператором SELECT. Простейшие формы таких запросов рассмотрены в статьях о простом скрипте поиска и его модификации. В этой статье рассмотрена уже чуть более полная форма оператора SELECT, позволяющая организовать более сложные и интересные запросы.

Вот что я оставил от SELECT для первого знакомства:

SELECT <имя_поля1>,..., <имя_поляN>

[FROM <имя_таблицы1>,...,<имя_таблицыM>

[WHERE <условие>]

[GROUP BY {<группировка1>, ...<группировкаL>]

[HAVING <условие_для_групп>]

[ORDER BY <имя_поля1> [DESC],..., <имя_поляR> [DESC]]

[LIMIT [<номер_строки>,] <количество_строк>]]

здесь:

SELECT - выбрать наборы полей

FROM - из таблиц

WHERE - где соблюдено условие

GROUP BY - сгруппированные по именам полей

HAVING - для групп справедливо условие

ORDER BY - упорядоченные по именам полей ( по умолчанию - возрастание, DESC - убывание )

LIMIT - начиная с номера строки, в количестве

Для работы с группировками в запросе нужно знать еще 5 групповых функций:

MAX() - максимальное значение в колонке

MIN()- минимальное значение в колонке

COUNT() - количество значений в колонке

SUM() - сумма всех значений в колонке

AVG() - среднее значение

Объединение таблиц в SELECT

Оператор SELECT позволяет выбирать значения полей из нескольких таблиц. Как это сделать - посмотрим на примере 2х таблиц:

В первой таблице rkz - данные рюкзаков: название, производитель, литраж.

nazvproizvlitr
Кондор 80Терра80
Lhotse CD-100RedFox100
Macalu CD 60RedFox60
Атлант - 90Normal90
KIMBERLY 80 1404Tatonka80
KATANGA 60Tatonka60

Во второй таблице ts - цены на рюкзаки в разных магазинах: название, магазин, цена.

nazvmagtsena
Кондор 80Спортбаза890
Кондор 80Туристёнок900
Кондор 80Туритура910
Lhotse CD-100Спортбаза3850
Атлант - 90Туритура3100
Атлант - 90Спортбаза3070
KIMBERLY 80 1404Спортбаза7500
KIMBERLY 80 1404Туритура7600
KIMBERLY 80 1404Туристёнок7620
KATANGA 60Спортбаза8100
KATANGA 60Туритура8105
KATANGA 60Туристёнок8092

Допустим, нам нужно вывести название рюкзака, его литраж, магазин и цену.

Это такой запрос:

SELECT rkz.nazv, rkz.litr, ts.mag, ts.tsena FROM ts,rkz WHERE rkz.nazv=ts.nazv

Здесь:

rkz.nazv, rkz.litr - поля nazv и litr из таблицы rkz;

ts.mag, ts.tsena - поля mag и tsena из таблицы ts;

WHERE rkz.nazv=ts.nazv - условие связывания строк таблиц - равенство значений поля nazv в обеих таблицах.

Для получения осмысленного результата запроса необходимо, чтобы в одной из объединяемых таблиц значение поля, по которому связываются строки, было уникальным.

Результат выполнения запроса:

nazvlitrmagtsena
Кондор 8080Спортбаза890
Кондор 8080Туристёнок900
Кондор 8080Туритура910
Lhotse CD-100100Спортбаза3850
Атлант - 9090Туритура3100
Атлант - 9090Спортбаза3070
KIMBERLY 80 140480Спортбаза7500
KIMBERLY 80 140480Туритура7600
KIMBERLY 80 140480Туристёнок7620
KATANGA 6060Спортбаза8100
KATANGA 6060Туритура8105
KATANGA 6060Туристёнок8092

Можно заметить, что рюкзак Macalu CD 60, которого нет во второй таблице, в результат запроса не попадает.

Продолжение статьи об операторе SELECT

* - обязательно заполнить

Комментарий

*Имя

E-mail

*Код: 

*Текст комментария:

Самые популярные статьи