|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Привет! Нужно составить запрос, не соображу как... Условно говоря и сильно упрощая есть спортсмены, судьи и оценки, которые судьи выставляют. Вот для наглядности скрипт создания таблиц с данными: Код: plsql 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. 32. 33. 34. 35. 36. 37.
А вот такой должен быть результат: Код: plaintext 1. 2. 3. 4. 5.
Т.е. слева спортсмены, сверху судьи, на перекрестье - оценка выставленная судьей спортсмену Как написать запрос для такого результата? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 15:46 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
pivot ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 15:53 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
andrey_anonymous, Насколько мне помнится в операторе PIVOT требуется явно перечислить столбцы, а если количество судей не фиксировано? Сегодня 2 а завтра 10 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 16:05 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Coder0, Перед запуском запроса на выполнение ты уже должен иметь возвращаемый список столбцов, это не динамический параметр. Но ты можешь создавать новый запрос для каждого выполнения исходя из своих данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 16:46 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 16:48 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Coder0 andrey_anonymous, Насколько мне помнится в операторе PIVOT требуется явно перечислить столбцы, а если количество судей не фиксировано? Сегодня 2 а завтра 10 ... Это принципиальное ограничение SQL - Вы должны определить структуру датасета во время компиляции. Решение Вашей задачи на SQL - скорее из разряда фокусов, чем рабочих решений, но таки возможно. 1. Код: plsql 1. 2. 3. 4. 5. 6.
2. ODCITable на базе anydata/anydataset 3. Правильное решение - поручить логику презентации данных отчетной системе. Волшебное слово - Crosstab. 4. Заюзать OLAP Option, MDX не имеет такого жесткого ограничения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 17:01 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Практически любой отчётник умеет делать шахматку, для этого не надо извращаться с получением плоской таблицы одним запросом. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 17:18 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Скажем так, это небольшая часть данных, которые мне нужно отдать по запросу с веб-сайта. Я уже подумываю, создать временную таблицу и наполнять ее двойным циклом. Хотелось красивого решения. не, так тоже не пойдет - кол-во столбцов неизвестно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 17:22 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
Coder0Хотелось красивого решения. Красивое решение это простой запрос "select athlete_id, referee_id, val from t_rating" и не менее простой цикл в PHP коде, который раскладывает эти данные по двумерному массиву "result[athlete_id][referee_id] = val". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2020, 17:37 |
|
Запрос для получения отчета - не соображу...
|
|||
---|---|---|---|
#18+
В общем, остановился на таком варианте: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Колонки формируем динамически, пробежавшись по таблице t_referees , и сформированный запрос выполняем execute immediate ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 16:12 |
|
|
start [/forum/moderation_log.php?user_name=Digan]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 441ms |
total: | 605ms |
0 / 0 |