|
|
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
Есть такой запросец: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. При выполнении кричит: Incorrect syntax near the keyword 'ORDER' . Без ORDER BY работает. Сами подзапросы по отдельности тоже... Нужто нельзя использовать сортировку при UNION, а только целиком результат объединения сортировать..? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 08:38:11 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
Убрать 1-й ORDER BY - и пойдет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 09:10:49 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
скобочки тоже :)) и получится сортировка юниона в целом а вообще если очень надо то мона измудрить вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 09:24:59 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
А зачем два запроса? Если написать просто Код: plaintext 1. 2. А если нужно продублировать записи с '% при %' тогда используй UNION ALL (хотя так дублировать вроде незачем, PK в результате не будет...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 09:34:25 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
На всякий случай использование ORDER BY в подзапросе разрешатся если указана фраза TOP, т.е. ( SELECT TOP 100 PERCENT [ArticleId], [dtmCreated], [title] FROM Articles WHERE [ArticleTypeId]=1 AND ([title] like '% при %') ORDER BY 2 ) UNION ( SELECT TOP 100 PERCENT [ArticleId], [dtmCreated], [title] FROM Articles WHERE [ArticleTypeId]=1 AND ([title] like '%при%') ORDER BY 2 ) А задачу думаю можно свести к одному запросу(если я правильно понял) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 10:12:02 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
К сожалению просто TOP не помогло. В итоге только вот это работает без ошибок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. To Glory: а что делает запрос который вы мне предложили (словами)? Я делаю типа поиск. Логика простоя, например ищем статьи в которых встречается слово "при". Поэтому сначала должны идти те, в которых слово "при" встречается целиком (обрамнелено пробелами (возможно знаки припинания добавлю)), а потом те записи, где оно как подстрока в слове. Ну и в каждой из групп отсортировано по дате... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 11:18:49 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
Если взять задачу в общем виде, то всегда можно сделать что-то вроде этого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. С уважением, Александр Степанов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 12:31:22 |
|
||
|
ORDER BY и UNION
|
|||
|---|---|---|---|
|
#18+
2Label К сожалению просто TOP не помогло Читайте BOL "The TOP clause limits the number of rows returned in the result set. TOP n [PERCENT] n specifies how many rows are returned. If PERCENT is not specified, n is the number of rows to return. If PERCENT is specified, n is the percentage of the result set rows to return: " а что делает запрос который вы мне предложили (словами)? Он делает именно, то что вы и написали, а именно ищем статьи в которых встречается слово "при". WHERE [ArticleTypeId]=1 AND ([title] like '%при%') Поэтому сначала должны идти те, в которых слово "при" встречается целиком ... а потом те записи, где оно как подстрока в слове ORDER BY CASE WHEN [title] like '% при %' THEN 1 ELSE 2 END для [title] like '% при %' будет выдаватся 1, для других случаев - 2. Поэтому при сортировке записи с 1-ей будет выводится первыми ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2002, 14:34:03 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32059135&tid=1819527]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 354ms |

| 0 / 0 |
