|
|
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Привет! Вот есть такой запрос, например Код: plaintext можно ли так их писать, а Sql у меня опыта такого большого нету.... (select * from .... )))) вот и спрашиваю... Спасибо! З.Ы. такой запрос кстати выводит, то что мне нужно... но я так полагаю, он не совсем правиль или коректно написан, да? Мда...Это не Рио Дежанейро! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 00:13 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
возможно, использование exists конструкции увеличит скорость запроса. а вообще, надо в профильный форум - Oracle, SQL Server и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 02:54 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Остап Ибрагимовично я так полагаю, он не совсем правиль или коректно написан, да?Это можно понять, посмотрев план выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 09:03 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Алексей К, Запросто то как раз и выводит все то что и нужно... но сам запрос, мне так кажется не красиво написан... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 11:44 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Остап Ибрагимовично сам запрос, мне так кажется не красиво написан...Ну напишите красиво :-)) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 12:26 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Правильно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 14:53 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVaПравильно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вот типа такого я и имел ввиду... Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 15:27 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
отнюдь неправильно, запрос возвращает больше данных, чем первоначальный. да и работать может медленее/быстрее, чем первый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 15:33 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 15:40 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Остап Ибрагимович, Вложенные запросы или join-ы - и так и так правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2009, 23:21 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer Вложенные запросы или join-ы - и так и так правильно Отнюдь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. (ключевые слова: декартово произведение , distinct ) ________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 01:04 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Формально вложенные запросы и join аналогичны,но использование первого, в таком варианте однозначно говорит о незнании sql(Ex_Soft, убери where в своем запросе).Любителям exists, следует учесть, что это - Self-Join, в общем варианте будут разные результирующие наборы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 11:42 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVa убери where в своем запросе Убрать ГДЕ? _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 12:39 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVa Формально вложенные запросы и join аналогичны Да?.. А я всю жизнь думал, что join - это декартово произведение ДВУХ таблиц со всеми вытекающими. А вложенный запрос, это выборка из ОДНОЙ таблицы записей, удовлетворяющих условию подзапроса. А оно вишь как... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 12:53 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 13:34 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVa Джойны разные бывают Гм... Повторяю то, что хочу донести: Ex_Soft А я всю жизнь думал, что join - это декартово произведение ДВУХ таблиц со всеми вытекающими. А вложенный запрос, это выборка из ОДНОЙ таблицы записей, удовлетворяющих условию подзапроса. Т.е.: запрос с вложенным запросом Код: plaintext 1. 2. 3. 4. 5. 6. мы могли бы просто напечатать WHERE snum = 1004 Код: plaintext 1. 2. 3. join (не важно какой) уже предполагает соединение двух и более таблиц, а это уже, IMHO, совсем другое, чем обычная выборка из одной таблицы по условию (пусть даже описанном во вложенном запросе). Ессесно речь о коррелированном/соотнесенном подзапросе не идет. Вот, будьте любезны, если уж join и вложенный запрос аналогичны, можете привести запрос с join'ом без distinct, который в выше указанной дрозофиле вернет две строки, как в случае с вложенным запросом? А еще лучше - дайте тынць на источник этого утверждения. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 14:18 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Не понял вопрос. Источник один - посмотри план выполнения Вместо Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 16:17 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVa посмотри план выполнения Код: plaintext 1. 2. 3. 4. 5. 6. QUERY PLAN FOR STATEMENT 1 (at line 1). STEP 1 The type of query is SELECT. 4 operator(s) under root |ROOT:EMIT Operator | | |SEQUENCER Operator has 2 children. | | | | |SCALAR AGGREGATE Operator | | | Evaluate Ungrouped ONCE AGGREGATE. | | | | | | |SCAN Operator | | | | FROM TABLE | | | | TT2 | | | | T2 | | | | Using Clustered Index. | | | | Index : pkTT2 | | | | Forward Scan. | | | | Positioning by key. | | | | Keys are: | | | | Id ASC | | | | Using I/O Size 2 Kbytes for index leaf pages. | | | | With LRU Buffer Replacement Strategy for index leaf pages. | | | | Using I/O Size 2 Kbytes for data pages. | | | | With LRU Buffer Replacement Strategy for data pages. | | | | |SCAN Operator | | | FROM TABLE | | | TT1 | | | T1 | | | Using Clustered Index. | | | Index : pkTT1 | | | Forward Scan. | | | Positioning by key. | | | Keys are: | | | Id ASC | | | Using I/O Size 2 Kbytes for index leaf pages. | | | With LRU Buffer Replacement Strategy for index leaf pages. | | | Using I/O Size 2 Kbytes for data pages. | | | With LRU Buffer Replacement Strategy for data pages. другими словами ( sequence ( scalar_agg ( i_scan pkTT2 ( table ( T2 TT2 ) ) ) ) ( i_scan pkTT1 ( table ( T1 TT1 ) ) ) ) ( prop ( table ( T2 TT2 ) ) ( parallel 1 ) ( prefetch 2 ) ( lru ) ) ( prop ( table ( T1 TT1 ) ) ( parallel 1 ) ( prefetch 2 ) ( lru ) ) это на select @@version Adaptive Server Enterprise/15.0.2/EBF 14332/P/NT (IX86)/Windows 2000/ase1502/2486/32-bit/OPT/Thu May 24 04:10:36 2007 И на Firebird 2.0 WI-V6.3.3.12981 Plan PLAN (T2 NATURAL) PLAN (T1 INDEX (PKT1)) Adapted Plan PLAN (T2 NATURAL) PLAN (T1 INDEX (PKT1)) никаких join'ов... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 17:34 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Осталось еще и для join планы показать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 18:53 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
SeVa Осталось еще и для join планы показать смысл? join даст join. Это - не неожиданно. А, вот, как SeVa Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. Это для меня - новость. Вот я и хочу, так сказать, научную базу сего факта... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 19:15 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
какая научная база? SQL оперирует множествами. Оптимизатор операции на двух и более множествах так или иначе преобразует в join'ы, т.к. других способов объединить множества у него нет (кроме union). например Код: plaintext Код: plaintext запрос Код: plaintext запрос, приведенный SeVa - ошибочен: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 19:35 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
авторexists также преобразуется к inner join, но немного более сложному и может работать значительно быстрее при наличии подходящего уникального индекса. запрос, приведенный SeVa - ошибочен: 1.exists преобразуется к self-join(в терминах команды ms sql),а не к простому Join.Это две большие разницы, выбираются только первые вхождения, а не все. 2.запрос не мой, я его скопировал автор Оптимизатор операции на двух и более множествах так или иначе преобразует в join'ы, т.к. других способов объединить множества у него нет (кроме union). Да, но только для разных наборов могут разные планы выполнения этих join авторсмысл? join даст join. Это - не неожиданно. А, вот, как А ты проверь.В ранних версиях MS SQL in и join могли иметь разные планы выполнения, посему in и не рекомендовалось использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 19:55 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
AAron какая научная база? Реляционная алгебра. Которая как раз и AAron оперирует множествами А AAron SQL уже зиждется на реляционной алебре. Которая имеет свои законы, 4 example: rUs=sUr, (rUs)Ut=rU(sUt) и т.п., согласно которым оптимизатор преобразовывает запрос. Вот я и добиваюсь: на основании какого(их) закона(ов) при изЪятии подзапроса из условия в Код: plaintext 1. 2. 3. 4. 5. 6. AAron например Код: plaintext 1. Код: plaintext 1. тынць Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. SeVa MS SQL У меня его, слава Богу, - нЭт. Я говорю о SQL, а не о каких-то специфических реализациях для определенных серверов определенных версий. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 20:16 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
ок. вариант с джойном может вернуть большее количество записей в случае неуникальности для указанного тынца. пусть r - фильтруемое множество, s - фильтрующее множество. выполнение операции IN как раз и есть пересечение множеств r и s. а тот символ, который Вы использовали - это объединение множеств, что, согласитесь, несколько иное. собственно, операции над множествами описаны здесь насчет того, кто кем оперирует - ваше же утверждение, что SQL базируется на реляционной алгебре, оперирующей множествами, приводит к выводу, что и SQL оперирует множествами. хотя, согласен, что такая формулировка слишком упрощена, но в данном случае это роли не играет. законы (именно законы) заставляющие оптимизатор работать так или иначе - это к разработчикам оптимизаторов. Известные мне Oracle и MSSQL в этом случае будут строить джойны (заодно вспомним алгоритмы пересечения множеств). не думаю, что ASE и DB2 сильно отличаются в этом плане. а вообще, это отношения к теме автора не имеет, варианты емы были предложены. далее - в профильный форум. закругляюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 21:05 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Aron, закон один-стандарт SQL.Прочти его обязательно,тогда ты узнаешь,что "этот символ",как раз и обозначает пересечение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:44 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Aron, закон один-стандарт SQL.Прочти его обязательно,тогда ты узнаешь,что "этот символ",как раз и обозначает пересечение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:49 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
значит мы говорим на разных языках. в теории множеств это объединение . пересечение описано здесь а теперь, жду аналогичные ссылки на "закон" SQL, где: 1. этот символ используется в качестве символа пересечения (скажем, на ANSI) 2. указывается, как должен вести себя оптимизатор любой РСУБД (тоже на ANSI) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 22:55 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
AAron множествами Справедливости ради, следует уточнить, что SQL оперирует с мультимножествами, которые позволяют многократное включение одного и того же кортежа. При этом некоторые законы реляционной алгебры, которые выполняются для множеств, не выполняются для мультимножеств. 4 example: дистрибутивный закон разности в применении к обЪединению (rUs)-t=(r-t)U(s-t). AAron законы (именно законы) заставляющие оптимизатор работать так или иначе - это к разработчикам оптимизаторов Ну зачем же так секретно? 4 example, cдесь все очень открыто расписано... AAron ок. вариант с джойном может вернуть большее количество записей Ну наконец-то... Хоть Вы согласились... Хотя Ex_Soft тынць .... http://www.sql.ru/forum/actualthread.aspx?tid=635706&pg=1#6775401](ключевые слова: декартово произведение, distinct ) AAron это отношения к теме автора не имеет, варианты емы были предложены Как это не имеет? Зачем же отказываться от своих слов? Вы справедливо заметили, что AAron неправильно, запрос возвращает больше данных, чем первоначальный Других вариантов, лично я, - не увидел. Получается - решение только одно, да и то - неправильное. Вы считаете - тема закрыта?.. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 23:27 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
насчет того символа Ex_Soft http://www.sql.ru/forum/actualthread.aspx?tid=635706&pg=1#6780382]Которая имеет свои законы, 4 example : rUs=sUr, (rUs)Ut=rU(sUt) и т.п. закон взят первый попавшийся от балды для примера и на основании чего Вы подумали, что я его привел в контексте IN - ума не приложу... AAron 2. указывается, как должен вести себя оптимизатор любой РСУБД 1. Ex_Soft http://www.ozon.ru/context/detail/id/1351096/]cдесь все очень открыто расписано... 2. Не как " должен вести себя оптимизатор", а на основании каких законов реляционной алгебры он в процессе оптимизации преобразовывает исходный запрос в оптимальный. 4 example, когда в Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2009, 23:48 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
Ex_Soft, 1. хорошо давать ссылки на скриншоты обложки книги. да и книга - не закон, речь шла о ссылке на стандарт. 2. ну... какие законы. операции над множествами уже приводились. вот из них все и берется. ладно, закроем тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 12:36 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
AAron хорошо давать ссылки на скриншоты обложки книги ну эта первый пришедший на ум букварик, в котором, как раз это все и описано: Глава 16. Компиляция и оптимизация запросов. AAron да и книга - не закон Гм... А пацаны-то и не знают... Т.е. закон Ома, попав в книгу под названием "Справочник по элементарной физике" перестал быть законом и, сиречь, действовать? AAron речь шла о ссылке на стандарт Стандарт ЧЕГО? Стандарт написания оптимизатора? Да нету такого. Вот, к примеру: Вам необходимо написать программу для расчета параметров электрической цепи. Как Вы ее напишете - это никого не волнует, главное, чтобы она все расчитывала согласно законам электротехники. AAron операции над множествами уже приводились. вот из них все и берется. Что-то я не увидел, 4 example , законы расщепления (splitting rules) условий оператора выбора: σC[sub]1 AND C2[/sub](R)=σC[sub]1[/sub](σC[sub]2[/sub](R)) σC[sub]1 OR C2[/sub](R)=(σC[sub]1[/sub](R)) US (σC[sub]2[/sub](R)) и многие другие, на основании которых работает оптимизатор. Ей Богу, не поленитесь - полистайте хотя бы выше указанный букварик. И Вы откроете для себя много нового... _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 13:12 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
P.S. NNTP формулы сломал... σ C1 AND C 2 (R)=σ C1 (σ C2 (R)) σ C1 OR C 2 (R)=(σ C1 (R)) U S (σ C2 (R)) _________________ "Helo, word!" - 17 errors 56 warnings ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 13:14 |
|
||
|
Правильно ли писать такие вложеные запросы по выборке
|
|||
|---|---|---|---|
|
#18+
P.P.S. тынць _________________ "Helo, word!" - 17 errors 56 warnings Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2009, 13:37 |
|
||
|
|

start [/forum/topic.php?all=1&fid=17&tid=1351957]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 425ms |

| 0 / 0 |
