В данной статье речь пойдет о использовании нескольких таблиц внутри оператора SELECT. Просто перечисление двух таблиц внутри оператора SELECT даст N * M записей, где N — количество записей в первой таблице, а M — во второй.Где каждая запись представляет собой конкатенацию одной записи из первой таблицы и одной записи из второй таблицы.
1
|
SELECT A.AGE, B.AGE FROM Student AS A, Student AS B
|
Если вы хотите два раза использовать одну и ту же таблицу в запросе, то вам необходимо переименовать ее. Переименование таблиц происходит также как и переименование столбцов с помощью AS. Если название какого — либо поля повторяются в таблицах, то для доступа к этому полю необходимо использовать «название_таблицы.имя_поля». Для дальнейшего объяснения данной темы модифицируем нашу базу данных. Добавим еще одну таблицу StudentGroup в которой у нас будут поля:
- int ID(номер группы)
- int SpecialtyID(номер специальности)
- bool commerce(коммерческая или бюджетная)
А в таблицу Student добавим поле GroupID(номер группы), которое будет связывать обе таблицы. Поэтому для вывода всех студентов из таблицы Student вместе достаточно ввести следующий запрос:
1
2
|
SELECT Student.ID, Student.Name, Student.Age, StudentGroup.SpecialityID FROM Student, StudentGroup
WHERE Student.GroupID=StudentGroup.ID
|
Для того, чтобы вывести пары студентов, имеющих одинаковый возраст:
1
2
|
SELECT A.AGE, B.AGE FROM Student AS A, Student AS B
WHERE A.Age=B.Age AND A.ID<>B.ID
|
Переименовать множества данных также следует, если вы используете в качестве таблицы подзапрос:
1
2
|
SELECT A.AGE FROM Student, (SELECT ID FROM StudentGroup) AS Groups
WHERE A.GroupID=Groups.ID
|
|