|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Здравствуйте. Изучаю SQL самостоятельно. Придумал задачку. Как её можно реализовать теоретически? Вот такая беда. Допустим, необходимо реализовать отчет в виде таблице. Вертикальном столбике написаны ФИО учеников, а в горизонтальном столбике их оценки. Необходимо на пересечении вывести кол-во оценок. Лучше будет гнать по SELECT COUNT(*) в каждую ячейку или как-то можно использовать временную таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 22:16 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Надо дочитать учебник до кляузы GROUP BY и все встанет на свои места. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 22:56 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Если оценок ограниченное количество, например 1,2,3,4,5 то можно еще почитать про iif, case и их использование с count. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 23:42 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Спасибо, получается, что-то вроде этого? (ФИО человека вертикально, а кол-во карандашей по цветам горизонтально в таблице) ? SELECT t1.человек , (SELECT COUNT(*) FROM table2 as t2 WHERE (t2.type=1)and(t1.человек=t2.человек)) AS 'количество красных', (SELECT COUNT(*) FROM table2 as t3 WHERE (t3.type=2)and(t1.человек=t3.человек)) AS 'количество синих' FROM table2 as t1 GROUP BY t1.человек ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 23:46 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Rphoenix, можно и так, но быстрее будет Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:02 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, спасибо! А если нужно не всех людей, а только определенных? Нужна дополнительная таблица? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:07 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
RphoenixНеобходимо на пересечении вывести кол-во оценок. Код: sql 1.
А дальше уже знай распихивай числа по пересечениям строки из первого поля со столбцом из второго. Тривиальная задача в любом языке программирования. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:16 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, пишет Dynamic SQL Error. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:17 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
RphoenixDimitry Sibiryakov, то есть создать кучу Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:23 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Rphoenixто есть создать кучу Не кучу. Один-единственный запрос, который выберет все оценки всех нужных людей. И этот запрос целиком я написал выше. Нужна фильтрация по именам - добавляй соответствующее условие, но ничего другого не трогай. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:25 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovИ этотзапрос *целиком* я написал выше. А нет, не целиком. Забыл "group by FIO, ocenka". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:26 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, проcто в условии Код: sql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 00:35 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Решил с помощью Код: sql 1.
и дополнительной таблицей. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 01:15 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
чё-то мышление у вас нифига не программистское, а какое-то депутатское вам же говорят - выбираете БАЗОВЫЙ where, а с него выдираете логикой нужные условия а не "миллион where с одним и тем же if" щас ещё и до селектов в циклах дойдём... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 04:09 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Шавлюк Евгений Код: sql 1. 2. 3. 4. 5. 6.
Раздражает уже этот вездесущий IIF. Буду в плохом настроении - начну чистить такие "советы". Пиши на стандартном CASE, не стесняйся. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 10:47 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
RphoenixИзучаю SQL самостоятельно.можно узнать по какому учебнику? Как вариант взять творение Мартина Грабера, ссылка есть в прилепленной теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 11:36 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
WildSery, А чем плох IIF? Мне он нравится хотя бы тем, что запись компактнее Как по мне, то Код: sql 1.
выглядит лучше чем Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 13:13 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Шавлюк ЕвгенийWildSery, А чем плох IIF? Мне он нравится хотя бы тем, что запись компактнее Как по мне, то Код: sql 1.
выглядит лучше чем Код: sql 1.
decode бужет на 1 символ короче :) Код: sql 1. 2.
Но iif нагляднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 13:26 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
afgmНо iif нагляднее.case самый понятный. В данном случае и "else 0" можно не писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 13:38 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyafgmНо iif нагляднее.case самый понятный. case понятнее тому кто кроме английского никаких языков не знает, и доки не имеет. Его минус в том что много лишних слов. Если писать в одну строку - то плоховато видно логику. Если разнести на несколько строк - то запрос расплывается в высоту и становится плохо видно логику запроса. В данном случае iif уместнее всего. Но как только вариантов условия становится больше 1-2 то iif тут же сливает и вперед вырывается case . Ivan_PisarevskyВ данном случае и "else 0" можно не писать. Варианты с "не писать" - они не относятся к вариантам "самый понятный". Лучше всего всё писАть явно. Всё IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2017, 04:02 |
|
Подзапрос с сортировкой
|
|||
---|---|---|---|
#18+
fraksВ данном случае iif уместнее всего.меня ииф с тоннами скобок уже в фастрепе подзадолбал, что я бывает, грешным делом получаю несколько полей с сервера, где уже все расставлено, а не в отчетнике, хотя идеологически было бы правильней подтасовать данные на клиенте, не напрягая сервер. fraksЛучше всего всё писАть явно.да, и, обычно, так и делаю: типа as для алиаса поля и двоеточие при присвоении параметра в фор селекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2017, 10:48 |
|
|
start [/forum/topic.php?fid=40&msg=39534379&tid=1561388]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 438ms |
0 / 0 |