|
|
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, прошу ткнуть носом в проблему, составил запрос работает: SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID WHERE q.C_ST = 0 GROUP BY t.C_AB_REF ORDER BY CNT ASC Пытаюсь сделать так чтобы выводило строки где CNT меньше 20 SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID WHERE q.C_ST = 0 AND CNT < 20 GROUP BY t.C_AB_REF ORDER BY CNT ASC ругает что cnt нет, что я делаю не так? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 17:46:12 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
having ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 17:54:45 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 17:57:33 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
dmdmdm, спасибо, заработало HAVING COUNT(q.C_ST) < 20 но почему не заработало HAVING CNT < 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:05:21 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
всё прочитал в документации, что алиасы нельзя использовать везде, если можно ещё вопрос, SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID GROUP BY t.C_AB_REF как в таком запросе вывести 1 строку? Извините за глупые вопросы раньше работал с mysql там проще, тут ROWNUM = 1 ломает CNT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:11:41 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
Дочитайте доку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:12:16 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
вывести 1 строку? Одну строку или первую строку? Rownum ничего не ломает, его надо научиться использовать. Одну строку получится, если у вас одна группа. Первую, вторую, энную - select from (order by "критерий - что такое первая, вторая, ... ?") where rownum = n. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:15:48 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
dmdmdmwhere rownum = n.Только чушь пороть не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:21:04 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
dmdmdm, SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID GROUP BY t.C_AB_REF ORDER BY CNT DESC пытаюсь вывести с этого запроса 1 строчку, и если делаю так: SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID WHERE ROWNUM = 1 GROUP BY t.C_AB_REF То выдёргивает 1 строчку не из моей выдачи, а скорее всего из таблицы, а мне нужно именно в этой выдаче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:21:25 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
Elic, да, пардон, виноват. rownum надо во внутреннем запросе поименовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:22:41 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
select * from ( SELECT (SELECT C_NAME FROM ST_ABONENTS WHERE ST_ABONENTS.ID = t.C_AB_REF) as ABONENTNAME, COUNT(q.C_ST) as CNT FROM QRY_QUEUE q JOIN QRY_TYPE t on q.C_QRY_TYPE = t.ID GROUP BY t.C_AB_REF ORDER BY CNT DESC ) where rownum = 1 нашёл такой солюшен, но я так понял это не более чем костыль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:25:46 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
where rownum = 1 - сработает для первой строки для любой строки по заданному критерию надо так Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. То, что вы изучали другую СУБД - не повод спрашивать на форуме, не читая доку . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:29:37 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
спасибо за направление :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:32:01 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
kirillsayapinнашёл такой солюшен, но я так понял это не более чем костыль? Что есть "не более чем костыль", а что - "более"? Вот это костыль или нет? https://docs.oracle.com/database/121/DWHSG/analysis.htm#DWHSG9188 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:32:16 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
dmdmdmдля любой строки по заданному критерию надо так В общем случае так не надо с 10g, когда появилась аналитика. А экпириенс иногда обновлять - как раз надо. Тем более что в 12 к аналитике добавлен синтаксический сахар в виде "fetch N rows only" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 18:35:15 |
|
||
|
Объявление переменной внутри запроса
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, менее костыль это то, что разработчик предложил на этот случай, например в mysql это LIMIT, но я так понял что в oracle всё немного специфичное В любом случае спасибо, правильно дали направление ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2016, 21:39:51 |
|
||
|
|

start [/forum/search_topic.php?author=Green+Chest&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
83ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 722ms |
| total: | 940ms |

| 0 / 0 |
