|
соединение таблиц
|
|||
---|---|---|---|
#18+
Есть таблица опросов id, -- порядковый номер вопроса q, -- текст вопроса a1, -- вариант ответа 1 a2 -- вариант ответа 2 Есть таблица ответов vote_id, -- порядковый номер вопроса из верхней таблицы (опросов) emp_id, -- работник ans_id -- порядковый номер ответа из верхней таблицы (если выбран ответ a1, то запишется 1; если a2 - запишется 2). Как получить отчет за какой ответ сколько голосов отдали? учитывая, если в таблице ответов по одному и тому же вопросу все ответы одинаковые (например со значением 1, то напротив значения 2 вывести 0). p.s. вариантов ответов на самом деле больше, для простоты указал только два. исходные таблицы WITH vote AS ( select '1' id, 'Какой ваш возраст' q,'до 30 лет' a1,'более 30 лет' a2 from dual union all select '2', 'Какой ваш стаж','до 10 лет','более 10 лет' from dual ) select * from vote; WITH voting AS ( select '1' vote_id, '1000' emp_id, '1' ans_id from dual union all select '1' vote_id, '1001' emp_id, '2' ans_id from dual union all select '2' vote_id, '1000' emp_id, '1' ans_id from dual ) select * from voting; ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 09:02 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
reaque, Варианты ответов должны быть в столбцах или в строках? Т.е. в результате должны быть колонки vote_id, ans_id, count или vote_id, count_a1, count_a2? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 09:18 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
reaque, Пока получилось нарисовать только такой ужас. Полагаю, что можно написать что-то попроще. И к тому же в текущей версии не отображаются варианты ответов, за которые пока никто не голосовал. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 09:19 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
PuM256, Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 09:22 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
reaque, Ответ должен быть примерно такой, но хотелось бы попроще конструкцию. При увеличении кол-ва ответов конструкция будет увеличиваться. Код: 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 09:32 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
reaque, Код: 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. 38. 39. 40. 41. 42.
...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 10:29 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
Stax, спасибо за unpivot ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 10:48 |
|
соединение таблиц
|
|||
---|---|---|---|
#18+
reaque PuM256, Код: plsql 1. 2. 3. 4. 5.
[spoiler] "Какие ваши доказательства?" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2021, 17:33 |
|
|
start [/forum/topic.php?fid=52&fpage=15&tid=1880017]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 170ms |
0 / 0 |