Сайтостроительство

       

Выборка данных из нескольких таблиц


Теперь перейдем к рассмотрению запросов из нескольких таблиц. У нас в двух таблицах присутствует поле с одним и тем же названием, поэтому язык SQL предусматривает возможность указывать название поля в виде имя_таблицы.имя_столбца. В нашем случае: gb.gb_id или message.gb_id. Давайте выберем пары: идентификатор гостевой книги, идентификатор сообщения. На первый взгляд приходит следующее: SELECT gb.gb_id, message_id FROM gb, message. Однако результатом будет декартово произведение, т.е. всевозможные комбинации - 20 записей из таблицы gb умножить на 52 записи из таблицы message получается 1040 записей.

Выборка данных из нескольких таблиц

Но нас интересуют только осмысленные комбинации, т.е. там, где совпадают значения полей gb_id, поэтому необходимо добавить условие WHERE gb.gb_id=message.gb_id. Теперь записей стало 52, как и положено.

Выборка данных из нескольких таблиц

Для того чтобы выбрать другие поля, просто добавьте их в запрос, только лучше писать полное имя, т.е. таблица.поле: SELECT gb.gb_id, gb.name, message.name, message_id FROM gb, message WHERE gb.gb_id=message.gb_id. Теперь давайте посчитаем количество записей в каждой гостевой книге, только при этом выберем еще и название гостевой книги.

SELECT gb.name, COUNT(*) from gb, message WHERE gb.gb_id=message.gb_id GROUP BY gb.name

Выборка данных из нескольких таблиц



Содержание раздела