|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
приветствую, немного наивный вопрос, но кажется, что есть решение. Подскажите как вернуть строки в определенном порядке Есть такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Нужно вернуть строки в порядке исходя из полей PriorityReport и ParentParamID. Первым критерием является приоритет. Но после получения приоритета нужно далее вернуть ВСЕ строки последовательно с таким же ParentParamID даже если у них ниже приоритет. Если заканчиваются все элементы с одним и тем же ParentParamID, то выбираем элемент со следующим по порядку приоритетом. И для него возвращаем все элементы с одинаковым родителем не зависимо от приоритета. И так далее... Если рассматривать два поля то нужно вернуть так PriorityReport ParentParamID 100 10 90 10 80 10 1 10 99 112 85 112 72 112 80 null ... Можно ли этот запрос как то переписать, чтобы выборка была так, как я показал? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 01:16 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, Код: sql 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. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 03:29 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, вариант №2: Код: sql 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. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 03:39 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 12:00 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Владислав Колосов, Первые два запроса не работают правильно. А ваш почти правильно. Спасибо большое за подсказку Я переписал первичный запрос так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Выводит так в реальной ситуации, привожу ниже Не понимаю до конца как это работает и почему приоритет 576 вылез вверх, хотя 576 меньше чем 910 ParamRecommendedID PriorityReport ParentParamID 689 576 82 120 910 94 114 895 94 102 874 94 103 777 94 99 758 94 97 757 94 110 756 94 98 755 94 128 733 94 127 732 94 129 731 94 124 700 94 123 699 94 100 689 94 101 688 94 113 584 94 117 564 94 116 536 94 112 532 94 111 499 94 76 351 94 93 350 94 115 304 94 720 340 182 714 339 182 745 323 182 719 320 182 713 319 182 718 318 182 712 317 182 717 114 182 711 113 182 716 112 182 710 111 182 181 36 182 1121 300 212 209 144 212 214 143 212 208 142 212 347 787 337 354 528 337 338 480 337 350 471 337 342 359 337 343 313 337 434 178 460 433 177 460 656 908 643 661 878 643 655 529 643 667 813 664 666 577 664 665 463 664 151 665 685 150 664 685 148 663 685 149 552 685 156 338 686 170 35 687 624 896 NULL 1099 723 NULL 621 720 NULL 136 648 NULL 752 636 NULL 134 631 NULL 620 614 NULL 1098 593 NULL 1097 592 NULL 1096 591 NULL 1095 590 NULL 619 585 NULL 623 565 NULL 1094 555 NULL 1093 554 NULL 622 537 NULL 650 533 NULL 141 475 NULL 648 472 NULL 1074 448 NULL 642 447 NULL 1092 387 NULL 1091 386 NULL 1090 376 NULL 1069 371 NULL 1075 370 NULL 632 369 NULL 635 368 NULL 1076 367 NULL 634 366 NULL 633 365 NULL 1070 364 NULL 1078 363 NULL 636 362 NULL 288 358 NULL 1089 333 NULL 625 305 NULL 1103 300 NULL 1115 300 NULL 1116 300 NULL 1104 300 NULL 1105 300 NULL 1106 300 NULL 1118 300 NULL 1117 300 NULL 1107 300 NULL 1108 300 NULL 1110 300 NULL 1109 300 NULL 1120 300 NULL 1119 300 NULL 1111 300 NULL 1112 300 NULL 1114 300 NULL 1113 300 NULL 1124 300 NULL 414 233 NULL 416 232 NULL 417 230 NULL 418 229 NULL 373 227 NULL 378 226 NULL 377 225 NULL 369 224 NULL 368 223 NULL 374 222 NULL 366 221 NULL 370 219 NULL 365 218 NULL 376 213 NULL 259 210 NULL 267 209 NULL 263 208 NULL 260 207 NULL 258 206 NULL 257 205 NULL 256 204 NULL 255 203 NULL 249 200 NULL 248 199 NULL 270 198 NULL 266 195 NULL 253 194 NULL 265 193 NULL 264 192 NULL 268 191 NULL 261 190 NULL 269 189 NULL 254 188 NULL 442 186 NULL 441 185 NULL 440 184 NULL 439 183 NULL 438 182 NULL 432 181 NULL 436 179 NULL 237 176 NULL 437 175 NULL 430 174 NULL 431 173 NULL 429 172 NULL 428 171 NULL 235 170 NULL 233 169 NULL 232 168 NULL 329 167 NULL 330 166 NULL 322 165 NULL 327 164 NULL 331 163 NULL 332 162 NULL 324 161 NULL 334 157 NULL 333 156 NULL 335 155 NULL 336 154 NULL 325 153 NULL 306 151 NULL 309 149 NULL 304 148 NULL 311 140 NULL 301 139 NULL 302 138 NULL 291 136 NULL 292 135 NULL 294 134 NULL 297 133 NULL 293 132 NULL 295 131 NULL 296 130 NULL 299 129 NULL 298 128 NULL 290 127 NULL 314 126 NULL 289 125 NULL 300 124 NULL 319 123 NULL 315 121 NULL 316 120 NULL 313 119 NULL 287 118 NULL 286 117 NULL 283 115 NULL 282 114 NULL 284 113 NULL 281 112 NULL 280 111 NULL 272 110 NULL 285 109 NULL 275 108 NULL 273 107 NULL 274 106 NULL 278 105 NULL 277 104 NULL 276 103 NULL 271 102 NULL 690 101 NULL 194 101 NULL 193 100 NULL 192 99 NULL 191 98 NULL 243 97 NULL 242 96 NULL 1088 95 NULL 241 95 NULL 1087 94 NULL 231 94 NULL 234 92 NULL 247 91 NULL 238 90 NULL 321 89 NULL 240 88 NULL 239 87 NULL 244 85 NULL 236 83 NULL 230 81 NULL 228 79 NULL 222 78 NULL 221 76 NULL 375 75 NULL 630 74 NULL 629 73 NULL 372 72 NULL 318 71 NULL 227 70 NULL 226 69 NULL 225 68 NULL 224 67 NULL 218 66 NULL 216 65 NULL 220 64 NULL 219 63 NULL 217 62 NULL 367 61 NULL 628 60 NULL 205 59 NULL 207 58 NULL 206 57 NULL 202 56 NULL 204 55 NULL 203 54 NULL 201 53 NULL 200 52 NULL 199 51 NULL 198 50 NULL 197 49 NULL 196 48 NULL 195 47 NULL 187 46 NULL 1071 45 NULL 188 45 NULL 637 44 NULL 186 44 NULL 638 43 NULL 189 43 NULL 639 42 NULL 190 42 NULL 1072 41 NULL 185 41 NULL 184 40 NULL 180 37 NULL 168 34 NULL 172 33 NULL 167 30 NULL 166 29 NULL 179 28 NULL 1086 27 NULL 751 27 NULL 173 26 NULL 175 23 NULL 174 22 NULL 161 21 NULL 165 20 NULL 163 19 NULL 162 14 NULL 147 13 NULL 152 12 NULL 154 11 NULL 159 9 NULL 157 7 NULL 155 5 NULL 153 4 NULL Модератор: Убирайте подобные портянки в спойлер ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 13:19 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, что значит работают не правильно? вы же описали логику: берется строка с наивысшим приоритетом (PriorityReport), далее выводятся строки с тем же parentParamID что у строки с наивысшим приоритетом вне зависимости от их собственного приоритета, когда такие строки заканчиваются берется следующая строка с наивысшим приоритетом и.т.д. сортировка по isnull(ParentParamID, 1000000000), PriorityReport DESC будет работать по другому: возьмется строка с наименьшим parentParamID, и потом выведется в порядке убывания приоритета. поскольку у вас в таблице ParentParamID = 82 наименьший он и выводит ее первую вне зависимости от ее приоритета. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 14:45 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff Challenger, что значит работают не правильно? вы же описали логику: берется строка с наивысшим приоритетом (PriorityReport), далее выводятся строки с тем же parentParamID что у строки с наивысшим приоритетом вне зависимости от их собственного приоритета, когда такие строки заканчиваются берется следующая строка с наивысшим приоритетом и.т.д. сортировка по isnull(ParentParamID, 1000000000), PriorityReport DESC будет работать по другому: возьмется строка с наименьшим parentParamID, и потом выведется в порядке убывания приоритета. поскольку у вас в таблице ParentParamID = 82 наименьший он и выводит ее первую вне зависимости от ее приоритета. Еще раз перепроверю сейчас. В любом случае спасибо, что подсказываете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 16:43 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, ничего не знаю, по Вашему письму мой вариант дает 100% совпадение результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 18:04 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff, ваш вариант все таки получилось докрутить, вы не учли, что приоритет и родитель в разных таблицах. осталось только снизу прицепить в порядке приоритета тех, у кого нет родителей. После тех у кого есть родители. И опять немного в ступоре Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 18:27 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, какая разница в каких таблицах колонки, у вас есть результирующий набор, все что вам нужно отсортировать его по алгоритму который вы описали: Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 18:36 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff, а последним запросом что вы показали? Он кстати с ошибкой выполняется Сообщение 8156, уровень 16, состояние 1, строка 1 Столбец "ParamName" для "x" указан более одного раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 18:48 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, ну подредактируйте там я не стал вдаваться в подробности что вы там у себя за код нарисовали, у вас в селекте колонка ParamName выводится несколько раз Код: sql 1.
перепишите мой на Код: sql 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. 27. 28.
ps: включайте немного голову, я надеюсь вы не просто копипастом занимаетесь а пытаетесь разобраться в коде что вам дают. иначе можете столкнуться с ситуацией когда какой нибудь шутник вам напишет в самом начале drop database к примеру, а вы безоглядки код запустите. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 18:54 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff, конечно, без включения головы ни один из запросов через копи-пэйст не работает. На я не понимаю зачем последний ваш запрос? Он явно не решает проблему вернуть аналиты с parentParamID = NULL А без этого условия я уже написал работающий вариант на базе вашего предложения и показал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 19:57 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
Challenger, вы что то в формулировке задаче поменяли На я не понимаю зачем последний ваш запрос? Он явно не решает проблему вернуть аналиты с parentParamID = NULL А без этого условия я уже написал работающий вариант на базе вашего предложения и показал выше. поясните какого результата вы хотите добиться если parentParamID = NULL лучше всего на примере, что сейчас вам выдает мой последний запрос и что в нем вас не устраивает, и как вы хотите что бы было. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 21:44 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff, Финальный запрос я поправил, он получился такой, привожу ниже. Вроде работает как нужно. Спасибо большое за помощь и подсказки. Если родителя нет, то такие элементы тоже нужно показать в порядке приоритета между элементами с родителями, не прерывая всю связку по родителю. Пример. PriorityReport ParentParamID 100 10 90 10 80 10 1 10 99 112 85 112 72 112 92 null 90 null 85 77 2 77 84 null 80 null Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.12.2021, 22:50 |
|
Специфика порядка вывода строк в запросе
|
|||
---|---|---|---|
#18+
felix_ff, думал здесь история закончилась, но не во всех ситуациях работает правильно последний запрос. Не могу понять почему? возвращает в некоторых случаях хвост не правильный. В конце появляются элементы с высоким приоритетом CUT Модератор: Последующие подобные портянки без спойлера будут приводить к удалению всего сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.12.2021, 16:07 |
|
|
start [/forum/topic.php?fid=46&msg=40118504&tid=1684031]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 168ms |
0 / 0 |