22.01.2014, 18:31
Иногда происходит необходимость произвести сложный запрос, с обращением в две или более таблиц, или упростить имя столбца в результирующих данных, как же быть?!
Для этого в SQL есть лэйблы, призванные упростить понимание написанного.
На примерах это будет более очевидно:
Согласитесь выглядит это ужасно, давайте применим к таблицам лэйблы:
Стало гораздо приятней.
Обращаю ваше внимание на вариант с написанием as, данное слово дословно обозначает "называть как", т.е. в нашем примере таблицу players называть как p. В 5 версии MySQL данным словом можно пренебрегать, что и было сделано.
Выполнив данный запрос мы обнаружим что наши столбцы называются так как мы написали:
Улучшим и это:
Теперь в результате мы получим столбцы с именами:
В данном случае пренебрегать словом as нельзя.
Также по лэйблам, тем что переназначают имена столбцов, можно производить сортировку, группировку и поствыборку.
Для этого в SQL есть лэйблы, призванные упростить понимание написанного.
На примерах это будет более очевидно:
Code:
SELECT players.username, house.pos_x, house.pos_y, house.pos_z FROM players, house WHERE players.banned = 0 AND house.owner = players.username
Code:
SELECT p.username, h.pos_x, h.pos_y, h.pos_z FROM -- players as p, house as h players p, house h WHERE p.banned = 0 AND h.owner = p.username
Обращаю ваше внимание на вариант с написанием as, данное слово дословно обозначает "называть как", т.е. в нашем примере таблицу players называть как p. В 5 версии MySQL данным словом можно пренебрегать, что и было сделано.
Выполнив данный запрос мы обнаружим что наши столбцы называются так как мы написали:
Code:
p.username, h.pos_x, h.pos_y, h.pos_z
Code:
SELECT p.username as username, h.pos_x as x, h.pos_y as y, h.pos_z as z FROM players p, house h WHERE p.banned = 0 AND h.owner = p.username
Code:
username, x, y, z
Также по лэйблам, тем что переназначают имена столбцов, можно производить сортировку, группировку и поствыборку.