[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование AS при JOIN
Страницы: 1, 2
Vova
Господа знатоки подскажите пожалуйста зачем при использовании JOIN используют AS?
Попался запрос такого плана, не могу понять, для чего?
JOIN ТАБЛИЦА AS ТАБЛИЦА1 ON ТАБЛИЦА1.ID = ТАБЛИЦА.ID
bestxp
ну что бы не писать по 40 раз длинные названия таблиц
Vova
То что AS служит для присвоения таблицам псевдонимов для более короткого обращения при перечислении их столбцов, я знаю. Но не понятно зачем псевдоним таблицы ссылается на эту же таблицу? При каких обстоятельствах это используют, вернее что за прием такой?
Vova
(псевдоним)ТАБЛИЦА1.ID = (сама таблица)ТАБЛИЦА.ID ?
Игорь_Vasinsky
select *from  table1 as t1 left join t2 as t2 on t1.id=t2.rid

или опустить as

select *from  table1  t1 left join t2  t2 on t1.id=t2.rid


это алиасы (псевдонимы) к именам таблиц (или полей) - чтобы меньше писать)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Vova
То что это алиасы (псевдонимы) у меня есть понимание, вопрос в другом

select *from table1 join table2 as t2 on table2.id=t2.id

что означает данное выражение в таком контексте?
Guest
select *from table2 join table2 as t2 on table2.id=t2.id

Вернее вот так
Игорь_Vasinsky
не логичный запрос

вернёт все строки в таблице причём каждого столбца по 2 раза

я бы понял если бы

select *from table2 join table2 as t2 on table2.id>t2.id


для сравнения строк между собой в таблице

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Цитата (Игорь_Vasinsky @ 1.11.2013 - 07:41)
не логичный запрос

вернёт все строки в таблице причём каждого столбца по 2 раза

я бы понял если бы

select *from table2 join table2 as t2 on table2.id>t2.id


для сравнения строк между собой в таблице

Извините я ошибся, имеется в виду запрос такого плана
select *from table2 join table2 as t2 on table2.id=t2.id
Игорь_Vasinsky
Цитата
не логичный запрос

вернёт все строки в таблице причём каждого столбца по 2 раза


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Guest
бывают ситуации когда таблицу необходимо JOIN саму к себе
Если написать без AS
SELECT table.id, table.name FROM table 
LEFT JOIN table ON table
.id = table.parent

будет непонятно какие table.id, table.name необходимо выбрать (и mysql выдаст ошибку)
Для этого и используют AS на всю таблицу

SELECT table.id, table.name FROM table 
LEFT JOIN table AS
childTable ON table.id = childTable.parent
Игорь_Vasinsky
дело не в as - её вообще можно не писать
дело в алиасе

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Vova
Цитата (Игорь_Vasinsky @ 1.11.2013 - 07:41)
не логичный запрос

вернёт все строки в таблице причём каждого столбца по 2 раза

я бы понял если бы

select *from table2 join table2 as t2 on table2.id>t2.id


для сравнения строк между собой в таблице

А что имеется ввиду под сравнениям строк, ведь это одна таблица? В чем логика сравнивать ее саму с собой.
А по такому запросу

select *from table2 join table2 as t2 on table2.id=t2.id

получается появляется еще одна точно такая же таблица, которую можно использовать для каких то дальнейший действий?
Игорь_Vasinsky
Цитата
А что имеется ввиду под сравнениям строк,


когда нужно сравнить строки в таблице между собой. логично же.

Цитата
получается появляется еще одна точно такая же таблица, которую можно использовать для каких то дальнейший действий?

запрос нелогичен. зачем напрягать бд 2мя одинаковыми выбрками, когда одной можно

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dr.nomore
Vova скорее всего это кривая попытка связать иерархическую таблицу. Таблицы такого вида соединяются сами с собой через псевдонимы. То есть берется оригинальная таблица, делается инстансь и между ними устанавливается связь, затем делается еще инстансь - экземпляр - и между инстансями еще раз устанавливатся связь и так пока рука программиста не устаканится. Сколько соединений - на такую глубину идет бурение.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.