На этот случай есть простое правило: после первого в цепочке LEFT JOIN могут идти только LEFT JOIN. Если это не так, то нужно группировать запросы с помощью скобок или использовать подзапросы. Мне ближе второй вариант.
Я вижу Geckelberryfinn прав. Понимания как работает JOIN никакого...
SELECT… FROM A LEFT OUTER JOIN B ON A.ID=B.ID AND A.FIELD=<Value>
Так пишут, когда нужно вывести ВСЕ строки из таблицы А и только для некоторых подключить поля из таблицы B.
SELECT… FROM A LEFT OUTER JOIN B ON A.ID=B.ID WHERE A.FIELD=<Value>
А так, когда надо вывести только те строки из таблицы А в которых A.FIELD=<Value> и подключить для них поля из таблицы B.
Вот более реалистичный пример:
SELECT
Parts.*,
COALESCE(Manufacturer1.comment, Manufacturer2.descr, Parts.Description) AS Description
FROM Parts
LEFT OUTER JOIN Manufacturer1 ON Parts.extID=Manufacturer1.num_id AND Parts.manufacturer='m1'
LEFT OUTER JOIN Manufacturer2 ON Parts.extID=Manufacturer2.partID AND Parts.manufacturer='m2'
Запрос с WHERE выдаст ну абсолютно не то что нужно, даже если не обращать внимание на количество строк, т.к. нумерация у каждого производителя своя и может запросто пересекаться. Аналогом же будет следующий запрос:
SELECT
Parts.*,
CASE Parts.manufacturer
WHEN 'm1' THEN COALESCE(Manufacturer1.comment,Parts.Description)
WHEN 'm2' THEN COALESCE(Manufacturer2.descr,Parts.Description)
ELSE Parts.Description
END AS Description
FROM Parts
LEFT OUTER JOIN Manufacturer1 ON Parts.extID=Manufacturer1.num_id
LEFT OUTER JOIN Manufacturer2 ON Parts.extID=Manufacturer2.partID
Но, мне кажется, первый запрос проще в понимании и более оптимальный в плане производительности.
"Сделайте плиз возможность нормально переключиться на английский"
Обеими руками за!
Неужели разработчикам непонятно, что если человек выбрал в выпадающих настройках валюту, страну доставки и язык интерфейса, то ему надо отдавать контент в соответствии с его предпочтениями?
Независимо от домена, блин!!!
Никакие ссылки по которым ходит пользователь не должны сбрасывать эти настройки. Только он сам!
А вы думаете он свои миллиарды планирует в могилку забрать?
Если у человека цель жизни колонизация Марса, то на это не грех и свои честно заработанные деньги тратить.
Если исходить из вашей логики, то не понятно, зачем люди поперлись в Антарктиду, например? Цингу заработать и в перспективе сдохнуть с вероятностью 90%?
Видимо покорителей Антарктиды жестоко пытали на родине, раз такие перспективы их не остановили, так? Или, все же, есть и другая мотивация кроме пироженек пожрать?
Я видел инстаграм :)
До сих пор в недоумении — как этим убогим интерфейсом можно пользоваться без риска повреждения головного мозга?
На десктопе сайт искусственно ограничен в функционале, хз почему.
Нативное андроид приложение не умеет работать в произвольной ориентации — в топку.
Подписи к картинкам скрыты, комментарии скрыты. Это недалеко ушло от 140 символов. Все нужно раскрывать, что бесит преизрядно.
Позиция просмотра в ленте не запоминается, да и показывается она неким рандомным методом.
Но, тем не менее, людям это убожество нравится. А мне, ради контента нескольких интересных людей, тоже приходится этой какой пользоваться (с перерывами в несколько месяцев для восстановления душевного здоровья, испорченного интерфейсом)
Я одного не понимаю: зачем искать группу Европейского Космического Агентства в ФБ, ВК или прочей анально огороженной клоаке, когда можно просто найти их сайт в интернете???
WHERE тут совсем не нужен. Все можно сделать через CASE
Еще более интересная ситуация с FULL OUTER JOIN!
Если я вижу как запрос:
так и запрос
то, с вероятностью 99% они оба ошибочные и делают не то, что имел в виду автор.
Правильный паттерн для FULL OUTER JOIN обычно такой:
На этот случай есть простое правило: после первого в цепочке LEFT JOIN могут идти только LEFT JOIN. Если это не так, то нужно группировать запросы с помощью скобок или использовать подзапросы. Мне ближе второй вариант.
Я вижу Geckelberryfinn прав. Понимания как работает JOIN никакого...
Так пишут, когда нужно вывести ВСЕ строки из таблицы А и только для некоторых подключить поля из таблицы B.
А так, когда надо вывести только те строки из таблицы А в которых A.FIELD=<Value> и подключить для них поля из таблицы B.
Вот более реалистичный пример:
Запрос с WHERE выдаст ну абсолютно не то что нужно, даже если не обращать внимание на количество строк, т.к. нумерация у каждого производителя своя и может запросто пересекаться. Аналогом же будет следующий запрос:
Но, мне кажется, первый запрос проще в понимании и более оптимальный в плане производительности.
Эта фича уже давно была в гугле. Через месяц-другой была бесследно выпилена по вполне понятным причинам.
А можно спросить: а зачем сейчас нужно большое городское население?
Как можно на планшете пользоваться приложениями, если они за малым исключением, работают только в вертикальной ориентации экрана?
На андроид планшете 99% нативных приложений представляют собой убогое говнище в плане UI. Поэтому только веб морда!
"Сделайте плиз возможность нормально переключиться на английский"
Обеими руками за!
Неужели разработчикам непонятно, что если человек выбрал в выпадающих настройках валюту, страну доставки и язык интерфейса, то ему надо отдавать контент в соответствии с его предпочтениями?
Независимо от домена, блин!!!
Никакие ссылки по которым ходит пользователь не должны сбрасывать эти настройки. Только он сам!
Бесит не меньше разлогина.
Вы шутите? На даче прекрасно работает телевизор еще GoldStar. Когда GoldStar превратился в LG предлагаю загуглить самостоятельно.
FireFox 52 ESR
Самое обидное, что все бы работало наверняка. Если бы не желание сэкономить на спичках.
А конкретнее 3 символа в catch (e)
Вы прям Шерлок Холмс ;)
А вы думаете он свои миллиарды планирует в могилку забрать?
Если у человека цель жизни колонизация Марса, то на это не грех и свои честно заработанные деньги тратить.
А на безбедную старость можно заначку оставить :)
Если исходить из вашей логики, то не понятно, зачем люди поперлись в Антарктиду, например? Цингу заработать и в перспективе сдохнуть с вероятностью 90%?
Видимо покорителей Антарктиды жестоко пытали на родине, раз такие перспективы их не остановили, так? Или, все же, есть и другая мотивация кроме пироженек пожрать?
А вы уверены, что имея рабочий Starship, Маск будет спрашивать соизволения от НАСА лететь на Марс или нет?
Одно дело когда НАСА нанимает SpaceX возить свои грузы и своих астронавтов на МКС. Тут заказчик волен предъявлять извозчику любые требования.
А вот если полет целиком внутрифирменное мероприятие, то непонятно каким боком тут НАСА?
А это сейчас новый тренд такой: выкатить сайт, который работает только на самой последней версии браузера, причем без всяких предупреждений?
Видимо разработчики Яндекса не верят в существование у пользователя браузера старше 3-лет. А жаль.
Цитаты, плиз, где я пишу что нарушаю или не нарушаю ПДД? С чего вы вообще взяли, что я вожу машину?
Учить других пытаетесь вы, при этом призывая нарушать ПДД:
После того, как я указал на сей прискорбный факт, последовало окончательное признание в легкомысленном отношении к ПДД:
Я видел инстаграм :)
До сих пор в недоумении — как этим убогим интерфейсом можно пользоваться без риска повреждения головного мозга?
На десктопе сайт искусственно ограничен в функционале, хз почему.
Нативное андроид приложение не умеет работать в произвольной ориентации — в топку.
Подписи к картинкам скрыты, комментарии скрыты. Это недалеко ушло от 140 символов. Все нужно раскрывать, что бесит преизрядно.
Позиция просмотра в ленте не запоминается, да и показывается она неким рандомным методом.
Но, тем не менее, людям это убожество нравится. А мне, ради контента нескольких интересных людей, тоже приходится этой какой пользоваться (с перерывами в несколько месяцев для восстановления душевного здоровья, испорченного интерфейсом)
Я одного не понимаю: зачем искать группу Европейского Космического Агентства в ФБ, ВК или прочей анально огороженной клоаке, когда можно просто найти их сайт в интернете???
Зачем вы это у меня спрашиваете? Спрашивайте у тех, кто бьет себя пяткой в грудь, утверждая, что всегда соблюдает ПДД.