@dflbrhekbn

Как правильно назначать алиасы таблицам и столбцам в mysql?

Делаю задания на сайте www.sql-ex.ru и вот местами просматриваю ответы на некоторые задания, где не могу справиться сам. И вот уже неоднократно встречаю запросы где вместо имени таблицы используется t1, t2, t3 и т.д. Например :
SELECT model
FROM (
SELECT model, price
FROM pc
UNION
SELECT model, price
FROM Laptop
UNION
SELECT model, price
FROM Printer
) t1
WHERE price = (
SELECT MAX(price)
FROM (
SELECT price
FROM pc
UNION
SELECT price
FROM Laptop
UNION
SELECT price
FROM Printer
) t2
);
Нашел что это называется алиас и почитал про них и AS. И вот не могу понять почему пример выше работает, а мой :
SELECT model
FROM t1
WHERE model = 1401
Ведь и там и там вместо имени таблицы используется t1 . К тому же я не вижу AS.
Объясните мне дураку !
  • Вопрос задан
  • 2730 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
dflbrhekbn: ключевое слово AS можно пропускать
SELECT * FROM `table_name` AS t1
эквивалентно
SELECT * FROM `table_name` t1

Конструкция
select .. FROM (
SELECT model, price
FROM pc
UNION
SELECT model, price
FROM Laptop
UNION
SELECT model, price
FROM Printer
) t1
означает что для данного запроса создается виртуальная таблица в которую помещается результат выполнения "SELECT model, price FROM pc UNION SELECT model, price FROM Laptop UNION SELECT model, price
FROM Printer" и ей в данном запросе присвоен алиас t1.
К слову сказать работают виртуальные таблицы дико медленно.
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
если Вы внимательно посмотрите на пример, то увидите что там идет селект с подзапроса, которому присвоен псевдоним. В Вашем же коде чему присвоен псевдоним? ничему... должно быть так
SELECT model
FROM table_name AS t1
WHERE model = 1401

т.е. псевдоним Вы должны присваивать либо конкретной таблице, либо конкретному полю, либо конкретной выборке
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы