black_angel_by: капюшон (Default)
black_angel_by ([personal profile] black_angel_by) wrote2008-06-10 05:11 pm

грёбаный SQL с грёбаными JOIN-ами

ДА, я сцук0 умниц0, наконец то заюзал первый раз LEFT JOIN.
даже ничего не поломал и всё равботает :)
Правда скрипт стал педалнее - с 0.028 секунды до 0.078. Обидно досадно но ладно. Главное докрутил недостающий функционал. Хотя если придумаю ч0 нить и заменю джоин на "обычный" вложеный SELECT или ещё какую каку придумаю, дабы сократить время выполнения, то обязательно заюзаю.

Фух.

Как бы это еще разобраться каким %ем отличается правый джоин от левого и внутреннего %)
в смысле RIGHT JOIN, LEFT JOIN и INNER JOIN. Но судя по мануалу разбиратсья придётся уже дома, предварительно опорожнив припасённый двухлитровик пива %)

[identity profile] atzkey.livejournal.com 2008-06-10 02:20 pm (UTC)(link)
Ну еще и FULL (OUTER) JOIN.

[identity profile] tarkhil.livejournal.com 2008-06-10 02:47 pm (UTC)(link)
разберешься - расскажешь. человеческим языком. ok?

[identity profile] metaclass.livejournal.com 2008-06-10 02:56 pm (UTC)(link)
(inner) join - в выходной результат попадают только записи, удовлетворяющие условию джоина для обоих таблиц.
left (outer) join - в выходной результат попадают записи как в inner join + все записи из первой(слева от джоина) таблицы для которых условие не выполняется(поля второй таблицы при этом заполняются null)
right (outer) join - инверсия left - все записи, как в inner + все записи, не подпадающие под условие джоина из второй, ака правой от join таблицы, при этом поля первой заполняются null.
full outer join - все записи подпадающие под условие джоин, + все записи из левой и правой не подпадающие под условие(т.е. и левый и правый одновременно)

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