Left Join SQL пример запроса с объ€снением

24:01:2010 –≥.

„асто молодые проектировщики баз данных, выучив основные SQL команды, относ€тс€ к некоторым из них с определенным непониманием, счита€ что можно обойтись "стандартным" набором запросов.   подобным запросам, не наход€щим понимани€, относитс€ команда LEFT JOIN, о которой пойдет речь в этой заметке.

 оманда Left Join SQL - смысл использовани€

ѕредположим, у нас есть микро-база данных автопарка, состо€ща€ из 2-х таблиц:Drivers & Cars.  —хема Ѕƒ
 ак видно на картинке справа, у левой таблицы водителей условно предусмотрены пол€ »м€ и ‘амили€.
“аблица же автомобилей содержит идентификатор водител€, производител€ автомобил€ и условное количество лет.

«аполним нашу базу данных, добавив туда несколько записей как в одну, так и в другую таблицы.

ƒл€ примера использована —”Ѕƒ Microsoft Access, поскольку последн€€ позвол€ет нагл€дно отобразить на скриншотах результаты. ќднако, €зык SQL €вл€етс€ универсальным и SQL примеры как на Left Join, так и другие, приведенные здесь, пойдут дл€ альтернативных баз данных - MySQL, MSSQL и пр.

“аблица Carsѕервыми представлены записи в таблице Drivers. ќни содержат 5 случайных имен-фамилий водителей.

Cars



“еперь рассмотрим таблицу водителей - внесено 3 записи. «аписи полей Manufacturer и Years созданы исключительно дл€ наполнени€. ќднако, обратите внимание на поле Id_Driver - туда сознательно внесено в 1-е поле идентификатор 1, а во второе и третье поле - 5. “аким образом, мы получаем ситуацию:

- ¬ас€ ѕупкин владеет автомобилем Honda
- јлександр ‘омин владеет двум€ автомобил€ми - ћазда и ‘орд
- —ергей ћихалков, ¬асилий  ривоносов, ¬иктор ћедведев не владеют автомобил€ми

≈сли упустить на данный момент left join и обратитьс€ к другим элементарным SQL командам, то, к примеру, выбрать водител€, имеющего в распор€жении какую-то определенную машину не составит труда.

ќднако, предствате себе, что вам нужно выбрать всех водителей, не имеющих автомобилей.
«десь задача не может быть решена простой простановкой св€зей - нужно использовать или Left Join или воспользоватьс€ подзапросом SQL.

SQL запрос с Left Join:

SELECT *
FROM Drivers AS D
LEFT JOIN Cars AS C ON D.ID=C.Id_Driver
WHERE C.Id_Driver is NULL;

ѕо€снение:
 оманда Left Join создает виртуальную таблицу, на основе таблиц, указанных в условии AS. ѕроставл€етс€ св€зь между данными таблицами, однако, даже если в правой таблице не окажетс€ соответствий левому ID, то данному полю при сли€нии будет присвоено значение NULL. 
–езультат SQL запоса Left Join
—лева на скриншоте показан результат отработки SQL запроса примера, приведенного выше.

¬ывод:  оманда SQL Left Join может быть эффективным средством, когда нужно выбрать данные в св€занных таблицах, наличие данных в которых не позвол€ет провести классический запрос через св€зи, указанные в условии WHERE.

P.S: ак было указано выше, данный пример можно решить подзапросом, однако, Left Join выгл€дит проще, с моей личной точки зрени€. ¬прочем, кому-то, возможно подзапросы будут удобнее.

ѕример SQL запроса по примеру выше с использованием подзапроса:
SELECT *
FROM Drivers AS D
WHERE NOT EXISTS
(SELECT C.Id_Driver FROM Cars AS C WHERE D.ID=C.Id_Driver)

 

 омментарии  

 
0#60LuciaAdafe2017-11-18 06:06Eat at Burger King For a Year!
Go to the site.
Enter your email now for a chance to win Burger King lunch for a year.
÷итировать
 
 
0#59Matthewrax2017-11-18 02:01 артофель порезать соломкой, хорошо промыть, отварить, морковь натереть и обжарить вместе с луком на масле. ƒобавить зажарку в суп, сцедить и отжать грибы, положить в кастрюлю к картофелю, проварить 5 минут. ¬сыпать промытый рис и варить 10 минут, читайте об этом подробнее на сайте zonakulinara.ru÷итировать
 
 
0#58EdwardPal2017-11-18 01:38“ом „апман из —Ўј проехал всю Ќовую «еландию с игрушечной рыбой. ѕо словам американца, игрушка помогает ему найти общий €зык с окружающими, пишет новозеландское издание Stuff, подробнее об этом читайте на сайте gturs.com÷итировать
 
 
0#57Richardspimb2017-11-17 16:52ѕо своим качественным характеристикам гипсокартон отлично подходит дл€ отделки квартир, домов, офисов и других жилых помещений. ¬о -первых, этот материал экологичен и не содержит вредных веществ, которые могут оказывать негативное воздействие на здоровье человека и окружающую среду, во-вторых, гипсокатрон €вл€етс€ энергосберегающим и звукоизолирующим материалом, он так же негорючий и огнестойкий. ѕодробнее читайте на сайте sovet-sadovody.ru÷итировать
 
 
0#56JeffryTar2017-11-16 07:01ƒл€ питьевой воды лучше всего приобретать картриджи с пропускной способностью на 5 или 1 микрон, подробнее об этом читайте на сайте dumainfo.ru÷итировать
 
 
0#55RichardDiurn2017-11-16 04:11ƒл€ того, чтобы нанести гидроизол€ционный слой на уже готовую бетонную конструкцию, используют специальные виды бетонов, которые обладают быстрой схватываемостью и водонепроницаемостью, читайте об этом подробнее на сайте beton-cement-ru.ru÷итировать
 
 
0#54Walterjek2017-11-14 13:11ѕеред тем, как заступить на службу в полицию, в течение полугода молодые бойцы изучали правовые дисциплины, основы оказани€ первой помощи, отрабатывали боевые приЄмы борьбы, нарабатывали физическую и огневую подготовку. ѕодробнее читайте на сайте astrakhan.net÷итировать
 
 
0#53ManuelBeipt2017-11-13 23:29«агородное строительство всегда было попул€рным во все времена. ѕотребители, устав от суеты шумных городов, устремл€лись на природу, подробнее об этом читайте на сайте montazhnik02.ru÷итировать
 
 
0#52StanleyGab2017-11-13 22:45–емонт уже давно перестал считатьс€ вселенской катастрофой, устроенной в отдельно вз€той квартире или доме. ¬ы убедитесь, что ремонт сегодн€, благодар€ новейшему строительному оборудованию и материалам, стал истинным удовольствием как дл€ самих хоз€ев жилища, так и дл€ строителей, читайте об этом подробнее на сайте blitz-remont.ru÷итировать
 
 
0#51Donaldinedo2017-11-12 05:55јмериканска€ компани€ Zebra Medical Vision представила алгоритмы искусственного интеллекта, которые помогут проведению полного медицинского обследовани€, подробнее об этом читайте на сайте tvoi-noski.ru÷итировать
 

ƒобавить комментарий


«ащитный код
ќбновить

« ASP.NET 4.0 публикаци€ проекта и проблемы с ASPNETDB.MDF ѕередача произвольного количества аргументов в функции PHP »

‘отоальбом

fotic.jpg

ќблако “егов