powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с LEFT JOIN + INNER JOIN
17 сообщений из 42, страница 2 из 2
Запрос с LEFT JOIN + INNER JOIN
    #38873284
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

Не знаю какой стоял на той работе Мускуль, но точно из 5.1. ... года 4 назад. Не работало.

Это нормальная практика в MS ACCESS и я ей активно пользовался. Был удивлен что тут "так низзя". С тех пор больше не проверял. Щас стоит 5.5. и 5.6 ... не начем. :)
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38873289
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladmiksoftНо лично я написал бы через два LEFT JOIN-а, потому как в объемных запросах слишком неожиданно встретить два ON подряд, особенно, когда их JOIN на экран выше.
LEFT JOIN-ы медленней работают, чем INNER JOIN.Не совсем так. Если данные в таблицах дают одинаковый результат для LEFT JOIN и INNER JOIN и если направление соединения таблиц в INNER JOIN совпадает с направлением LEFT JOIN, то одинаково. (Что весьма вероятно в случае топикстартера). В остальных случаях, да, LEFT JOIN может быть медленнее, чем INNER JOIN.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38873461
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftsvnvladпропущено...

LEFT JOIN-ы медленней работают, чем INNER JOIN.Не совсем так. Если данные в таблицах дают одинаковый результат для LEFT JOIN и INNER JOIN и если направление соединения таблиц в INNER JOIN совпадает с направлением LEFT JOIN, то одинаково. (Что весьма вероятно в случае топикстартера). В остальных случаях, да, LEFT JOIN может быть медленнее, чем INNER JOIN.

ДАЁШЬ ЗАПРЕТ LEFT JOIN ! Пора положить конец этому тормозу!
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38873542
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понимаю - какой прок от более быстрого запроса, если он даёт не то, что требуется?
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38873844
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЯ не понимаю - какой прок от более быстрого запроса, если он даёт не то, что требуется?

Зато он быстрый!

Предлагаю вообще все запросы в БД заменять на

Код: sql
1.
 select 123, 42 ;



Будет мегасупербыстро!
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38873913
lamer yuga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivmiksoftпропущено...
Не совсем так. Если данные в таблицах дают одинаковый результат для LEFT JOIN и INNER JOIN и если направление соединения таблиц в INNER JOIN совпадает с направлением LEFT JOIN, то одинаково. (Что весьма вероятно в случае топикстартера). В остальных случаях, да, LEFT JOIN может быть медленнее, чем INNER JOIN.

ДАЁШЬ ЗАПРЕТ LEFT JOIN ! Пора положить конец этому тормозу!поддерживаю!

Тем более что FULL JOIN уже запрещен
видимо тоже по причине крайней тормознутости
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875299
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453я вот одного не понял

Т1 - план прибытия автомобилей - arrives
T2 - car_drivers
T3 - cars
T4 - drivers.

вот в упор не понимаю почему 4 таблицы.

если за машиной закреплён водитель один, то Т2 ненужно
если это некая компания, и на каждую поездку(одна запись в прибытие) делается связь водитель-машина, всёравно не понятно зачем Т2

а уж почему Т1 и Т2 связаны, совсем загадка.
За машиной закреплен водитель, но водитель может поменяться, так же как и пересесть на другую машину или уволиться. Связь многие-ко-многим. Но в основном один водитель закреплен за одной машиной. Т2 - чтобы выбирать сразу водитель-машина.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875300
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЯ не понимаю - какой прок от более быстрого запроса, если он даёт не то, что требуется?
В данном случае как раз дает. Зачем плодить лишние LEFT, если по логике там однозначное жесткое соответствие.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875307
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхsvnvladМожно ли сделать без скобок?
Код: plaintext
T1--left join-- T2 -- inner join -- T3 

я же тебе показал вложенные джойны, без скобок.:Добрый Э - Эхsvnvlad,

используй вложенность при написании джойнов:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT * 
  FROM t1
    LEFT JOIN t2 
      INNER JOIN t3 
      ON t3.t2_id = t2.id
    ON t2.t1_id = t1.id


чем-то не устроило?
Кстати, заметил, что если внешний LEFT JOIN заменить на INNER JOIN, то сервер выдает ошибку.
И нигде нет информации о вложенных джойнах (по поиску в интернете).
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875314
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladКстати, заметил, что если внешний LEFT JOIN заменить на INNER JOIN, то сервер выдает ошибку.о которой мы должны догадаться?
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875407
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladзаметил, что если внешний LEFT JOIN заменить на INNER JOIN, то сервер выдает ошибку.
Это не потому, что запрос получается синтаксически неверным, а потому, что ты при замене ещё где-то накосорезил.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38875410
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladВ данном случае как раз дает.Запрос - это расчётное отражение бизнес-логики. При левом и при внутреннем связываниях логика - разная. И если два РАЗНЫХ запроса ВДРУГ один раз дают одинаковые выходные наборы - это не значит, что запрос верный. И не значит, что выходные наборы ВСЕГДА будут одинаковыми и, главное, верными.

Это всего лишь ещё одно подтверждение правила, что "есть категория граждан, которым везёт".
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38878250
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinasvnvladВ данном случае как раз дает.Запрос - это расчётное отражение бизнес-логики. При левом и при внутреннем связываниях логика - разная. И если два РАЗНЫХ запроса ВДРУГ один раз дают одинаковые выходные наборы - это не значит, что запрос верный. И не значит, что выходные наборы ВСЕГДА будут одинаковыми и, главное, верными.

Это всего лишь ещё одно подтверждение правила, что "есть категория граждан, которым везёт".
Я не понял, к чему вы придираетесь. Если вы про категорию граждан, то это не про меня, я понимаю отличие Inner от Left. Но в данном случае бизнес логика задает жесткую связь.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38878262
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akinasvnvladзаметил, что если внешний LEFT JOIN заменить на INNER JOIN, то сервер выдает ошибку.
Это не потому, что запрос получается синтаксически неверным, а потому, что ты при замене ещё где-то накосорезил.
А вы попробуйте. Тот же самый запрос, но внешний JOIN вместо LEFT поставьте INNER. Уже встречал на просторах сети такую же жалобу.
Этот запрос выдает нормальный результат
Код: sql
1.
2.
3.
4.
5.
SELECT * FROM auto_card ac
  LEFT JOIN car_driver cd 
 	 INNER JOIN car c ON c.id = cd.car_id
  	 INNER JOIN driver d ON d.id = cd.driver_id
  ON cd.id = ac.car_driver_id 



А этот выдает ошибку
Код: sql
1.
2.
3.
4.
5.
SELECT * FROM auto_card ac
  INNER JOIN car_driver cd 
 	 INNER JOIN car c ON c.id = cd.car_id
  	 INNER JOIN driver d ON d.id = cd.driver_id
  ON cd.id = ac.car_driver_id 



MySQL ServerYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON cd.id = ac.car_driver_id' at line 5
(0,531 сек)
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38878455
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladЭтот запрос выдает нормальный результат
svnvladА этот выдает ошибку
Используя недокументированные способности парсера, не надо сильно наглеть, полагая, что будут корректно обработаны любые возможные комбинации. Корректная обработка вложенных джойнов - конечно, фича, но ненадёжная. Вспомните введение приоритета джойна над запятой или позиционной зависимости разбора натуральных джойнов.
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38878508
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladalex564657498765453я вот одного не понял

Т1 - план прибытия автомобилей - arrives
T2 - car_drivers
T3 - cars
T4 - drivers.

вот в упор не понимаю почему 4 таблицы.

если за машиной закреплён водитель один, то Т2 ненужно
если это некая компания, и на каждую поездку(одна запись в прибытие) делается связь водитель-машина, всёравно не понятно зачем Т2

а уж почему Т1 и Т2 связаны, совсем загадка.
За машиной закреплен водитель, но водитель может поменяться, так же как и пересесть на другую машину или уволиться. Связь многие-ко-многим. Но в основном один водитель закреплен за одной машиной. Т2 - чтобы выбирать сразу водитель-машина.
А ведь бывают еще машины, за которыми закреплены экипажи... Из нескольких человек, не обязательно из двух...
И водители в этих экипажах тоже могут (теоретически) меняться друг с другом рейсами...
Впрочем, это все в ТЗ - есть/нет/пофиг
...
Рейтинг: 0 / 0
Запрос с LEFT JOIN + INNER JOIN
    #38879593
ArthurSU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex564657498765453а уж почему Т1 и Т2 связаны, совсем загадка.
А как иначе определить какая машина приехала
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос с LEFT JOIN + INNER JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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