Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы tab1 ,tab2 tab1 tab2 id article article .. .. .. .. 23 54546 68734 56 75554 45654 57 86766 85655 Необходимо получить ID для общих article. Первый запрос не подхватывает инндексы и в таблице 2 много сторок с одинаковыми article. Хотелось бы сперва сделать под запрос на уникальность а потом сравнение. Во втором запросе план доступа хороший, но получаю ошибку SQL0811N Результат скалярной полной выборки, оператора SELECT INTO или оператора VALUES INTO - больше одной строки таблицы. Как можно поправить SQL? SELECT tab1.ID FROM tab1, tab2 WHERE tab1.article = tab2.article SELECT tab1.ID FROM tab1 WHERE tab1.article = (select DISTINCT tab2.article from tab2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 13:49 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
segoffЕсть две таблицы tab1 ,tab2 tab1 tab2 id article article .. .. .. .. 23 54546 68734 56 75554 45654 57 86766 85655 Необходимо получить ID для общих article. Первый запрос не подхватывает инндексы и в таблице 2 много сторок с одинаковыми article. Хотелось бы сперва сделать под запрос на уникальность а потом сравнение. Во втором запросе план доступа хороший, но получаю ошибку SQL0811N Результат скалярной полной выборки, оператора SELECT INTO или оператора VALUES INTO - больше одной строки таблицы. Как можно поправить SQL? SELECT tab1.ID FROM tab1, tab2 WHERE tab1.article = tab2.article SELECT tab1.ID FROM tab1 WHERE tab1.article = (select DISTINCT tab2.article from tab2) Не проверял, но попробуйте( distinct - возможно не нужен) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 14:01 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
segoffЕсть две таблицы tab1 ,tab2 tab1 tab2 id article article .. .. .. .. 23 54546 68734 56 75554 45654 57 86766 85655 Необходимо получить ID для общих article. Первый запрос не подхватывает инндексы и в таблице 2 много сторок с одинаковыми article. Хотелось бы сперва сделать под запрос на уникальность а потом сравнение. Во втором запросе план доступа хороший, но получаю ошибку SQL0811N Результат скалярной полной выборки, оператора SELECT INTO или оператора VALUES INTO - больше одной строки таблицы. Как можно поправить SQL? SELECT tab1.ID FROM tab1, tab2 WHERE tab1.article = tab2.article SELECT tab1.ID FROM tab1 WHERE tab1.article = (select DISTINCT tab2.article from tab2) Ещё вариант: Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 14:11 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
medoed, Не подхватывается индекс в tab2(article), мне не нужен уникальный ID. Я хочу, чтоб первым подзапрос выполнился (select DISTINCT tab2.article from tab2) он отсекает более 90% записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 14:13 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
segoff, Заменить во втором запросе знак равенства на IN не поможет? Или это нарушит логику запроса? SELECT tab1.ID FROM tab1 WHERE tab1.article IN (select DISTINCT tab2.article from tab2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 14:18 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
segoffmedoed, Не подхватывается индекс в tab2(article), мне не нужен уникальный ID. Я хочу, чтоб первым подзапрос выполнился (select DISTINCT tab2.article from tab2) он отсекает более 90% записей. Создайте сессионку - запихайте туда select DISTINCT tab2.article from tab2 - накатите индекс на сессиоку, а потом заджойните , как вам надо tab1 c с сессионкой - я ж не знал что у Вас вторая таблица большая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 14:30 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаров, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 16:41 |
|
||
|
Помогите с запросом ошибкa SQL0811N
|
|||
|---|---|---|---|
|
#18+
Евгений Хабаровsegoff, Заменить во втором запросе знак равенства на IN не поможет? Или это нарушит логику запроса? SELECT tab1.ID FROM tab1 WHERE tab1.article IN (select DISTINCT tab2.article from tab2) Это не просто не нарушит логику запроса, а исправит неверную логику. Правильно исходный запрос должен бы выглядеть так: Код: sql 1. 2. 3. IMHO более читаемо: Код: sql 1. 2. 3. На тему, что использовать - посмотреть планы, реальное время выполнения. Замечу, интересно почитать гугл на тему "IN vs EXISTS" или "NOT IN vs NOT EXISTS" (кстати, в общем случае они семантически неэквивалентны). PS В ту же копилку: ftp://ftp.software.ibm.com/software/dw/dm/db2/0208zubiri/0208zubiri.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 17:30 |
|
||
|
|

start [/forum/topic.php?fid=43&gotonew=1&tid=1601464]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 166ms |

| 0 / 0 |
