powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / синтаксис подзапрос
21 сообщений из 21, страница 1 из 1
синтаксис подзапрос
    #38340874
ВячеславЛ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем на php+mysql нужно сделать выборку

так бы я написал на MS SQL

select * from t1 where t1.id_t2_n in (select t2.n where t2.id=1)

думаю разжевывать не надо... )))

как на mysql сварганить такой запрос?

заранее спасибо!
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38340936
Да в точности также.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38341244
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если будет тупить - переписать на иннерджойн.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38342439
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему и на ms sql можно записать так

select t1.*, t2.n from t1, t2 where t1.id_t2_n = t2.n and t2.id=1;
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344025
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerпо-моему и на ms sql можно записать так

select t1.*, t2.n from t1, t2 where t1.id_t2_n = t2.n and t2.id=1;
Написать-то можно, но вообще тем, кто так пишет, в аду приготовлен специальный костер!
Лучше оформлять через INNER JOIN
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344273
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

Не сгущайте краски, на костер это не тянет. Костер там для тех, кто мешает запятые с явными JOIN-ами. :)
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344460
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

inner join это короста которой покрывается мозг тех, кто слушает полугурков.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344464
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы жизнь малиной не казалась

FROM a INNER JOIN b INNER JOIN c ON (b.id = c.id) ON (a.id = c.id)

http://stackoverflow.com/questions/10856016/can-you-have-an-inner-join-without-the-on-keyword

http://ru.wikipedia.org/wiki/Реляционная_алгебра

Так в чем разница выяснения отношений в этих двух синтаксисах?
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344500
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Вы даете ссылку про inner join в Оракле.
Однако в MySQL ситуация несколько другая:
http://dev.mysql.com/doc/refman/5.5/en/join.html In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344541
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

При чем тут оракле, ну, то ест понятно при чем. Смысл в том что синтаксис INNER JOIN скрывает от пользователя всю правду, потому что неизбежно тянет за собой ON. Вы отрезали логический конец в цитате: "INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise."

Чувак на переполненном стеке и задает вопрос - а что будет без ON? Ну надо полагать то и будет, t1*t2 без ограничений. Тогда зачем платить больше, если можно натурально все описать как ест? select t1, t2; К чему лишние сущности?

Тривиальный пример

В иерархической таблице 253 записи. Поля name, iden, parent. parent показывает на id. Я взял такую таблицу чтобы была одна, а не две штуки.

пишу SELECT t1.*, t2.* FROM product_group t1, product_group t2

То есть умножаю таблицу саму на себя. Showing rows 0 - 29 (64,009 total, Сейчас в таблице тотально все что надо. Остается только отрезать лишнее.

пишу SELECT t1.*, t2.* FROM product_group t1, product_group t2 WHERE t1.id = t2.parent;

Showing rows 0 - 29 (233 total... Это и есть INNER JOIN. Зачем его явно описывать, когда еще более явно оно фигурирует после слова FROM в перечислении таблиц.

Поскольку inner не оставляет нужной информации для дальнейшего разворачивания иерархии, то дальше умножать таким способом смысла нет и вот тогда появляется смысл в LEFT JOIN.

А пока он не появился - зачем усложнять?
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344551
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В большинстве же практических применений, скажем заменить указатели на справочники содержанием поля справочника - требуется INNER JOIN как метод. Нам не нужна лишняя информация, надо Название города вставить ON Код города допустим. Однако синтакис INNER JOIN ON дает тавтологию в контексте. Отношения задаются в явном виде условием Города.Код Города = Продукт.Код Города. Разве не ясно как относится поля из самого условия? Да, в это частном случае удобно юзать USING.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38344552
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще оракля на моей стороне :)

Some join examples:

SELECT * FROM table1, table2;

Конец цитаты. Такой синтаксис идет первым в списке.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345045
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Я никак не пойму, о чем вы толкуете? INNER JOIN хуже, потому что букв набирать больше?
Еще раз процитирую:
In standard SQL, they are not equivalent.Добавлю - не только в стандарте, но в других СУБД. Поэтому кивки на Оркал непонятны.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345206
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

INNER JOIN хуже потому что человек не понимает что происходит, считает будто бы именно синтаксис INNER JOIN ему все обеспечивает. А вы думаете откуда берутся вложенные силекты для двух таблиц?
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345214
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Про эквивалент они пишут о CROSS'е. Инны насколько я понимаю, везде одинаковые. По крайней мере в МС точно так же.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345223
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggermiksoft,

INNER JOIN хуже потому что человек не понимает что происходит, считает будто бы именно синтаксис INNER JOIN ему все обеспечивает. А вы думаете откуда берутся вложенные силекты для двух таблиц?Все равно не понимаю. Вложенные селекты для двух таблиц вполне имеют право на жизнь, особенно, если к ним нужно применить, например, агрегацию.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345246
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Не знаю что сказать. Есть такие люди, как их, выживисты короче, забыл как по-английски. Копают бункеры и агрегируют туда консервы. Вспомнил, сюрвиалисты от survive.

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

Я пытался объяснить что надо понимать что происходит, поскольку иначе все начинает бессмысленно и вредно усложняться как в примере в первом сообщении.

Пришлось агрегироваться - агрегируйтесь. И вообще SQL идет в противоположную от намеченной творцами цели. С чего начинается статья про джойны? С того, что две трети задумок потомки так и не реализовали. Зато вложенные силекты им сделали.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345254
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerнадо понимать что происходитС этим не могу не согласиться :)
По остальному полемизировать не берусь, сейчас не могу.
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345311
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerнадо понимать что происходитт.е. вам не нравится тот факт, что мускуль позволяет отдельным кодерастам писать запросы, даже не понимая, что они, собственно, пишут (и при этом не ругается на синтаксис и т.д)? ну да, есть такое, яркий пример - отключенный по умолчанию only_full_group_by...
"but that's a fearure!" (c) :)
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345405
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
deblogger,

Почему "усложнять"? Для наглядности преобразуйте в общее декартово произведение левый джойн с каким-нибудь отсекающим условием... а я на вас посмотрю. :)

К примеру:

SELECT * FROM table1 LEFT JOIN table2 ON table2.fkey=table1.id AND table2.control IN(1,2,3) ;

только потому, что условие в ON - наглядно, его и использую вместо операции "запятая"... :)
...
Рейтинг: 0 / 0
синтаксис подзапрос
    #38345485
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggermiksoft,

INNER JOIN хуже потому что человек не понимает что происходит, считает будто бы именно синтаксис INNER JOIN ему все обеспечивает.
0_о
Новое слово в разработке серверного кода!
А стандарт ANSI вообще идиоты писали...

[INNER|LEFT|RIGHT] JOIN явно показывает, что таблицы связаны.
Через запятые сам пишу, когда таблицы никак не связаны, но НД один.
Для меня это просто культура и стандарт. + наглядность.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / синтаксис подзапрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]