|
|
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
сосбственно - сабж. интересует линка, где описано как для тех, кто в танке. конкретно, не могу понять, как работает LEFT JOIN. Прочел ману раз 50, думал, что понял - написал запрос - оказалось, что ничего я не понял. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 13:53 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
Если есть возможность то растолкуйте тезисы из маны manual Выражение "A LEFT JOIN B" в MySQL реализовано следующим образом: Таблица B устанавливается как зависимая от таблицы A и от всех таблиц, от которых зависит A. Таблица A устанавливается как зависимая ото всех таблиц (кроме B), которые используются в условии LEFT JOIN. Все условия LEFT JOIN перемещаются в предложение WHERE. Выполняются все стандартные способы оптимизации соединения, за исключением того, что таблица всегда читается после всех таблиц, от которых она зависит. Если имеется циклическая зависимость, MySQL выдаст ошибку. Выполняются все стандартные способы оптимизации WHERE. Если в таблице A имеется строка, соответствующая выражению WHERE, но в таблице B ни одна строка не удовлетворяет условию LEFT JOIN, генерируется дополнительная строка B, в которой все значения столбцов устанавливаются в NULL. Если LEFT JOIN используется для поиска тех строк, которые отсутствуют в некоторой таблице, и в предложении WHERE выполняется следующая проверка: column_name IS NULL, где column_name - столбец, который объявлен как NOT NULL, MySQL пререстанет искать строки (для отдельной комбинации ключа) после того, как найдет строку, соответствующую условию LEFT JOIN. >Таблица B устанавливается как зависимая от таблицы A и от всех таблиц, от которых зависит A. Если помимо таблицы А и В есть еще и С, которое учавствует в запросе что-то вроде "SELECT ... FROM C, A LEFT JOIN C ..." То как происходит объединение? >Все условия LEFT JOIN перемещаются в предложение WHERE. Т.е. я пишу условие после слова ON и в процессе выполнения запроса MySQL перемещает условие в WHERE? или как? >Если в таблице A имеется строка, соответствующая выражению WHERE, >но в таблице B ни одна строка не удовлетворяет условию LEFT JOIN, >генерируется дополнительная строка B, в которой все значения столбцов >устанавливаются в NULL. Опять же, если таблиц несколько, то происходит объединение всех таблиц, кроме той, которая объеденяется по LEFT JOIN по условию в WHERE, а затем проверяется условие, которое объявлено после слова ON? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 14:31 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
А тебе это для чего все? Быстродействие оценить? Если нет - тогда создай пяток таблиц с 3,5,7 записями в каждой и проэксперементируй с ними с разными JOIN :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 14:45 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
Я не могу составить запрос. О Быстродейсвии пока что не может быть и речи... Я мог бы выложить дамп, но там 9 таблиц (основных - 3-4)... Но в такое глобальное врядли кто-то будет вдумываться... Да и на будущее, не всег да же за апросами в форум ходить... Мне бы понять... ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 14:55 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
4m@t!cЯ не могу составить запрос. О Быстродейсвии пока что не может быть и речи... Я мог бы выложить дамп, но там 9 таблиц (основных - 3-4)... Но в такое глобальное врядли кто-то будет вдумываться... Да и на будущее, не всег да же за апросами в форум ходить... Мне бы понять... ---------------------------------------- Артисты не приехали, приехали цыгане Всё просто. Джойнится первая (среди указанных) тбл со второй, результат джоина первой со второй джойнится с третьей, предыдущий результат джойнится с четвертой, ............ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:06 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
JohnmenВсё просто. Джойнится первая (среди указанных) тбл со второй, результат джоина первой со второй джойнится с третьей, предыдущий результат джойнится с четвертой, Т.е. если есть запрос SELECT ... FROM B, D, E, A LEFT JOIN C ... То сначало объеденяются таблицы B*D=DB, потом DB*E=DBE, потом DBE*A=DBEA (при этом используются соответсвующие условия WHERE), а потом и С (с соотвествущими условиями в ON, которые автоматически переносятся в WHERE). Я все правильно понял? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:24 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
4m@t!c JohnmenВсё просто. Джойнится первая (среди указанных) тбл со второй, результат джоина первой со второй джойнится с третьей, предыдущий результат джойнится с четвертой, Т.е. если есть запрос SELECT ... FROM B, D, E, A LEFT JOIN C ... То сначало объеденяются таблицы B*D=DB, потом DB*E=DBE, потом DBE*A=DBEA (при этом используются соответсвующие условия WHERE), а потом и С (с соотвествущими условиями в ON, которые автоматически переносятся в WHERE). Я все правильно понял? ---------------------------------------- Артисты не приехали, приехали цыгане Не могу сказать, у меня таких запросов никогда не было и не будет. Т.к. использую или только явное соединение или только неявное. Что и рекомендуется делать. Ибо в противном случае, поведение парсера и оптимизатора непредсказуемо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:29 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
ману читать бесполезно, возьми книгу по любой "большой" БД, в которой достаточно внимания уделено собственно сиквелу, там будет что ты хочешь и даже больше. вот у меня тут рядом валяется двухтомник роберт вьера "professional: ms sql server 2000 программирование" от издательства wrox там все супер. на английском есть в сети 100%.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:30 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
JohnmenНе могу сказать, у меня таких запросов никогда не было и не будет. Т.к. использую или только явное соединение или только неявное. Что и рекомендуется делать. Ибо в противном случае, поведение парсера и оптимизатора непредсказуемо Что есть "явное соединение" и что есть "неявное соединенеие" в вашем понимании? (пример?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:42 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
4m@t!c Что есть "явное соединение" и что есть "неявное соединенеие" в вашем понимании? (пример?) Явное: ...FROM T1 ... JOIN T2 ... ON <условие соединения> Неявное: ... FROM T1, T2 ... WHERE <условие соединения> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 17:49 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
Запрос: Код: plaintext Эквивалентен следующему: Код: plaintext Код: plaintext Пример LEFT JOIN'а: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Надеюсь стало понятнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 05:29 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
Я , конечно, "дико извиняюсь", но как всё-таки по поводу 4m@t!cсосбственно - сабж. интересует линка, где описано как для тех, кто в танке ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 17:09 |
|
||
|
Подскажите, где прочесть теорию оп объединению таблиц?
|
|||
|---|---|---|---|
|
#18+
OneOfGuestsЯ , конечно, "дико извиняюсь", но как всё-таки по поводу 4m@t!cсосбственно - сабж. интересует линка, где описано как для тех, кто в танке ? JOIN SYNTAX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 17:29 |
|
||
|
|

start [/forum/search_topic.php?author=BezdnaMS&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 421ms |
| total: | 742ms |

| 0 / 0 |
