[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задавать префиксы таблицам это хороший тон?
Страницы: 1, 2, 3, 4
glock18
Цитата (Valick @ 20.03.2014 - 13:54)
Цитата
Либо я не понял вопроса, либо не понимаю проблему:

речь о USING

USING в таком запросе (больше 1 джойна) вообще почти наверняка уже не получится использовать почти никогда, за исключением случая когда во всех джойнах одна и та же мастер-таблица. Как ни вертитесь
twin
Valick
Цитата
по мне так в такой таблице и без комментариев много чего понятно, а так же и в запросах (где нет комментариев) гораздо яснее
Ну и славно, я разве против. Только если есть возможность комментировать название поля, зачем пренебрегать... Просто по секрету скажу, это для того и придумано, чтобы безболезненно пользовться профитом сквозных имен.
Цитата
например в запросе test.id_parent и test.user_id имеют колосальные различия информативности.
На смом деле это зависит от скрипта, ну и привычки естественно. Если привык пользоваться универсльными названиями, никаких сложностей это не вызывает. На крайний случай можно и в запросе оставить комментарий. Обычно этого не нужно.

Зато насколько проще работать с универсальными скриптами... Тут конкурс был как то на скрипт сортировки данных. Условия были такими, что нужно было отсортировть таблицу по этому ключу в том числе. Каких только названий там не было. И каждое приходилось прописывать в вызов. А если связующее поле у всех таблиц называется одинаково, вообще никаких проблем.

Про динамически создаваемые запросы тоже писал уже.

Цитата
вникать не надо, просто добавь еще один внешний ключ в свою тестовую таблицу, тем более что действительно помешать этому ничего не может.
Ну сам же написал - ничего помешать не может... В чем затык, не понимаю. В названиях? Каждый сам решает. Да хоть пронумеруй.

С алиасами я тоже ничего не понял. Я имел ввиду полное копирование:
Цитата
    INSERT INTO `table` SELECT * FROM `table2`

Конечно, случай частный и очень редкий, на то и смайлик поставил. smile.gif


glock18
Цитата
USING в таком запросе (больше 1 джойна) вообще почти наверняка уже не получится использовать почти никогда, за исключением случая когда во всех джойнах одна и та же мастер-таблица. Как ни вертитесь
А я не писал про два. Я писал про первую и последнюю таблицу.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
glock18
Valick, вы ведь действительно не умеете слушать других wink.gif Я подумал, что Николай "полным копированием" имел ввиду insert into `table`select * from `table`

И при * тут никак алиасы не применить. Да и не нужно вообще-то, поскольку тут и так все пройдет нормально.
glock18
Цитата (twin @ 20.03.2014 - 14:31)
А я не писал про два. Я писал про первую и последнюю таблицу.


Это ответ был Валику в первую очередь. Но и тебе тоже, поскольку вы оба, видимо, не поняли, что тот запрос, который выше allesklar написал, нельзя переписать с using
Valick
Цитата
USING в таком запросе (больше 1 джойна) вообще почти наверняка уже не получится использовать почти никогда, за исключением случая когда во всех джойнах одна и та же мастер-таблица. Как ни вертитесь

glock18, шо?
Цитата

ON conditional_expr | USING (column_list)

USING (column_list) служит для указания списка столбцов, которые должны существовать в обеих таблицах. Такое выражение USING, как:

A LEFT JOIN B USING (C1,C2,C3,...)

семантически идентично выражению ON, например:

A.C1=B.C1 AND A.C2=B.C2 AND A.C3=B.C3,...

Вы какую-то белебердецкую белебердень сказали biggrin.gif

_____________
Стимулятор ~yoomoney - 41001303250491
glock18
Valick
Ох какой вы все таки толстолобый. Проверьте хотя бы, прежде чем своё невежество демонстрировать на форуме.
twin
Valick
Ты реально тут не прав, хотя бы даже из того, что привел пруфом:
Цитата
USING (column_list) служит для указания списка столбцов, которые должны существовать в обеих таблицах.
А в запросе allesklar их три. Я на это не обратил внимание, так как суть тут совсем в другом.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Valick
glock18, давайте уже без истерики запрос в студию. И если я не прав, я извинюсь, не побоясь показать своё невежество всему форуму. А если неправы будете вы, вы готовы отказаться от звания эксперта? wink.gif
Не надо включать "лося" и привязываться к единичной букве префикса. Еще раз повторяю префикс может состоять из любого количества букв вплоть до полного имени таблицы.
И если вы читаете это первый раз, то становиться видно невооружённым глазом, кто тут не умеет слушать других wink.gif
USING нельзя применить только в одном случае если поля по которому связаны таблицы в этих таблицах имеют разные названия.

_____________
Стимулятор ~yoomoney - 41001303250491
Valick
twin, я не AllesKlar. Я сразу сказал, что ваша претензия высосана из пальца и основана на эфимерном законе именования префикса одной единственной буквой равной первой букве имени таблицы.
А вот это
Цитата
INSERT INTO `table` SELECT * FROM `table2`

вообще хер пойми с какого перепугу сюда за уши притянуто smile.gif
имена в этих таблицах должны быть идентичными, а уж с префиксами они там будут или без них разницы вообще никакой.

_____________
Стимулятор ~yoomoney - 41001303250491
glock18
Цитата (Valick @ 20.03.2014 - 14:46)
glock18, давайте уже без истерики запрос в студию. И если я не прав, я извинюсь, не побоясь показать своё невежество всему форуму. А если неправы будете вы, вы готовы отказаться от звания эксперта? ;)
Не надо включать "лося" и привязываться к единичной букве префикса. Еще раз повторяю префикс может состоять из любого количества букв вплоть до полного имени таблицы.
USING нельзя применить только в одном случае если поля по которому связаны таблицы в этих таблицах имеют разные названия.

Да тут префикс ни причем совершенно.

SELECT * FROM users 
LEFT JOIN ban ON (users.u_id = ban.u_id)
LEFT JOIN access ON (ban.b_id = access.b_id)


Если сможете этот запрос без костылей сделать рабочим с using, то лично попрошу Николая перевести меня в группу форумчан ;) Пара условий очевидных для мало-мальски грамотного программиста - в таблице users нет поля b_id, а в таблице access нет поля u_id. Из соображений нормализации бд, разумеется.
glock18
Цитата (glock18 @ 20.03.2014 - 14:54)
Цитата (Valick @ 20.03.2014 - 14:46)
glock18, давайте уже без истерики запрос в студию. И если я не прав, я извинюсь, не побоясь показать своё невежество всему форуму. А если неправы будете вы, вы готовы отказаться от звания эксперта? ;)
Не надо включать "лося" и привязываться к единичной букве префикса. Еще раз повторяю префикс может состоять из любого количества букв вплоть до полного имени таблицы.
USING нельзя применить только в одном случае если поля по которому связаны таблицы в этих таблицах имеют разные названия.

Да тут префикс ни причем совершенно.

SELECT * FROM users 
LEFT JOIN ban ON (users.u_id = ban.u_id)
LEFT JOIN access ON (ban.b_id = access.b_id)


Если сможете этот запрос без костылей сделать рабочим с using, то лично попрошу Николая перевести меня в группу форумчан ;) Пара условий очевидных для мало-мальски грамотного программиста - в таблице users нет поля b_id, а в таблице access нет поля u_id. Из соображений нормализации бд, разумеется.

Это запрос, который привел Allesklar, и на который вы, Валик, ответили, что надо было использовать using.

После чего не поняли вполне простого объяснения, указывающего на невозможность этого. Докажите что я не прав.
Valick
Цитата
в таблице users нет поля b_id, а в таблице access нет поля u_id. Из соображений нормализации бд, разумеется.

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

_____________
Стимулятор ~yoomoney - 41001303250491
twin
Valick
Причем тут буквы... И префиксы в целом. Я имел ввиду, что называть ключи, привязывая их к определенной внешней таблице не совсем удобно. Ну для меня как минимум. А префикс, мефикс, да можно вообще назвать поле `index_from_table_essence_user_id`. Вон как информативно. Толку то... USING фиг используешь. biggrin.gif

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Valick
Цитата
USING фиг используешь.

используешь, если в связываемой таблице будет тоже самое имя


_____________
Стимулятор ~yoomoney - 41001303250491
glock18
Valick, я читаю ее с самого начала. А вот вы не читали даже одно единственное сообщение allesklar. Точнее прочитали, но не подумали. А теперь пытаетесь скорчить мину при плохой игре.
Быстрый ответ:

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