грёбаный SQL с грёбаными JOIN-ами
Jun. 10th, 2008 05:11 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
ДА, я сцук0 умниц0, наконец то заюзал первый раз LEFT JOIN.
даже ничего не поломал и всё равботает :)
Правда скрипт стал педалнее - с 0.028 секунды до 0.078. Обидно досадно но ладно. Главное докрутил недостающий функционал. Хотя если придумаю ч0 нить и заменю джоин на "обычный" вложеный SELECT или ещё какую каку придумаю, дабы сократить время выполнения, то обязательно заюзаю.
Фух.
Как бы это еще разобраться каким %ем отличается правый джоин от левого и внутреннего %)
в смысле RIGHT JOIN, LEFT JOIN и INNER JOIN. Но судя по мануалу разбиратсья придётся уже дома, предварительно опорожнив припасённый двухлитровик пива %)
даже ничего не поломал и всё равботает :)
Правда скрипт стал педалнее - с 0.028 секунды до 0.078. Обидно досадно но ладно. Главное докрутил недостающий функционал. Хотя если придумаю ч0 нить и заменю джоин на "обычный" вложеный SELECT или ещё какую каку придумаю, дабы сократить время выполнения, то обязательно заюзаю.
Фух.
Как бы это еще разобраться каким %ем отличается правый джоин от левого и внутреннего %)
в смысле RIGHT JOIN, LEFT JOIN и INNER JOIN. Но судя по мануалу разбиратсья придётся уже дома, предварительно опорожнив припасённый двухлитровик пива %)
no subject
Date: 2008-06-10 02:20 pm (UTC)no subject
Date: 2008-06-10 02:28 pm (UTC)no subject
Date: 2008-06-10 02:47 pm (UTC)no subject
Date: 2008-06-10 02:56 pm (UTC)left (outer) join - в выходной результат попадают записи как в inner join + все записи из первой(слева от джоина) таблицы для которых условие не выполняется(поля второй таблицы при этом заполняются null)
right (outer) join - инверсия left - все записи, как в inner + все записи, не подпадающие под условие джоина из второй, ака правой от join таблицы, при этом поля первой заполняются null.
full outer join - все записи подпадающие под условие джоин, + все записи из левой и правой не подпадающие под условие(т.е. и левый и правый одновременно)
еще необходимо учесть, что если условию джоина удовлетворяет несколько комбинаций записей первой и второй таблицы - в выходной результат попадут все эти комбинации. Декартово произведение множеств, короче, после чего фильтр-условие поверх результата.
no subject
Date: 2008-06-10 09:39 pm (UTC)Ай-ай, лишил своим рефератом человека удовольствия самому во всем разобраться.
Да, и запутал с декартовым произведением. Идеологически ему соответсвует явное определение table1 CROSS JOIN table2 или неявное FROM table1, table2; можно было просто ограничиться замечанием обо всех возможных комбинациях.
no subject
Date: 2008-06-11 06:44 am (UTC)no subject
Date: 2008-06-11 11:10 am (UTC)но появиилсь доп вопросы.
full join какого то хера не сработал - ошибка
(мот дело в том, что вторая таблица это результат селекта, но Inner и LEFT отрабатывают без проблем)
cross join отработал как inner. что бы это значило ? MySQL 5.0.x
no subject
Date: 2008-06-11 08:47 pm (UTC)no subject
Date: 2008-06-11 08:48 pm (UTC)no subject
Date: 2008-06-10 09:41 pm (UTC)