так: items

-

Задание связей между таблицами

Чтобы связать две таблицы и получить из них данные, используется все то же ключевое слово where. Только критерий фильтрации, записываемый по­сле этого слова, имеет несколько другой вид. Какой — мы сейчас рассмот­рим на примере.

Предположим, нам нужно получить названия авторов статей, а также назва­ния категорий, в которые попадают эти статьи. Для этого нам будет нужно связать таблицы items (статьи) и categories (категории) так, как показано на рис. 6.6. Напишем такой запрос SQL:

SELECT items.author, items.name, categories.name FROM items, categories WHERE items.catid=categories.id;

Нам будет проще разобрать его по частям, в порядке слева направо.

□ После ключевого слова select, как мы уже знаем, записывается список имен нужных нам полей. Здесь возникает небольшая проблема: обе таб­лицы — И items, И categories — имеют поле name, И, чтобы сервер дан­ных знал, из какой таблицы брать это поле, мы запишем перед именем поля имя таблицы, в которой оно находится, разделив их точкой. Вот

так: items.name ИЛИ categories,name.

Вообще, предварять имя поля именем таблицы, в которой оно находится, — хороший стиль написания запросов SQL. Будем так поступать в дальнейшем.

□ После ключевого слова from записываются имена обеих таблиц, из кото­рых мы получаем данные: items и categories. Эти имена нужно разде­лить запятой.

О А вот после ключевого слова where и записывается критерии связывания таблиц. Он имеет такой же вид, как критерий фильтрации — items. catid=categories. id — и предписывает серверу данных .тля каждой записи таблицы items найти такую запись таблицы categories, чтобы зна­чение ее поля id было равно значению поля catid записи таблицы items.