Господа знатоки подскажите пожалуйста зачем при использовании JOIN используют AS?
Попался запрос такого плана, не могу понять, для чего?
JOIN ТАБЛИЦА AS ТАБЛИЦА1 ON ТАБЛИЦА1.ID = ТАБЛИЦА.ID
bestxp
31.10.2013 - 14:49
ну что бы не писать по 40 раз длинные названия таблиц
То что AS служит для присвоения таблицам псевдонимов для более короткого обращения при перечислении их столбцов, я знаю. Но не понятно зачем псевдоним таблицы ссылается на эту же таблицу? При каких обстоятельствах это используют, вернее что за прием такой?
(псевдоним)ТАБЛИЦА1.ID = (сама таблица)ТАБЛИЦА.ID ?
Игорь_Vasinsky
1.11.2013 - 07:07
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
То что это алиасы (псевдонимы) у меня есть понимание, вопрос в другом
select *from table1 join table2 as t2 on table2.id=t2.id
что означает данное выражение в таком контексте?
select *from table2 join table2 as t2 on table2.id=t2.id
Вернее вот так
Игорь_Vasinsky
1.11.2013 - 07:41
не логичный запрос
вернёт все строки в таблице причём каждого столбца по 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
Цитата (Игорь_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
1.11.2013 - 08:02
Цитата |
не логичный запрос
вернёт все строки в таблице причём каждого столбца по 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бывают ситуации когда таблицу необходимо 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
1.11.2013 - 08:24
дело не в 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
Цитата (Игорь_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
1.11.2013 - 10:44
Цитата |
А что имеется ввиду под сравнениям строк, |
когда нужно сравнить строки в таблице между собой. логично же.
Цитата |
получается появляется еще одна точно такая же таблица, которую можно использовать для каких то дальнейший действий? |
запрос нелогичен. зачем напрягать бд 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
6.11.2013 - 19:36
Vova скорее всего это кривая попытка связать иерархическую таблицу. Таблицы такого вида соединяются сами с собой через псевдонимы. То есть берется оригинальная таблица, делается инстансь и между ними устанавливается связь, затем делается еще инстансь - экземпляр - и между инстансями еще раз устанавливатся связь и так пока рука программиста не устаканится. Сколько соединений - на такую глубину идет бурение.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.