Aleksandr
Интересующийся
Offline
|
|
« : 28-10-2008 08:59 » |
|
Помогите разобраться. Необходимо вывести сведения о мужчинах, родившихся с 1 января по 1 апреля заданого года. Существует две базы ( два файла_(Group и Study) В одной находиться номе студента, фамиоия, имя, пол, в другой - номер студента, названия предмета, оценка (балл) Пишу Select distinct family, name, ball from group, study where pol="м" and date between {01/01/85} and {01/04/85} Выводиться нормально, но мне необходимо также вывести поле ball ( для этого добавляю это поле) - выводиться одна и таже фамилия несколько раз. Как это избежать?
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #1 : 28-10-2008 09:07 » |
|
Aleksandr, group by ...
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #2 : 28-10-2008 09:23 » |
|
Не совсем понял. Если можно поподробнее
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #3 : 28-10-2008 09:32 » |
|
Фраза GROUP BY (группировать по) инициирует перекомпоновку указанной в FROM таблицы по группам, каждая из которых имеет одинаковые значения в столбце, указанном в GROUP BY.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Sla
|
|
« Ответ #4 : 28-10-2008 09:33 » |
|
Иванов Иван 5 Иванов Иван 4 Петров Петр 3 Петров Петр 2
Как ты себе представляешь выбор?
зы в plsql возможно следующее форматирования листинга
Иванов Иван 5 4 Петров Петр 3 2
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #5 : 28-10-2008 09:51 » |
|
Пишу select distinct family, name, subject from group, study where sex="м" and date between {01/01/85} and {01/04/85} Получыется Иванов Сергей Информатика Иванов Сергей математика Иванов Сергей ИСТОРИЯ в ПРИНУИПЕ ВСЕ НОрмально, но мне надо чтобы еще и оценки выводились (поле ball) добавляю поле ball select distinct family, name, subject, ball from group, study where sex="м" and date between {01/01/85} and {01/04/85} Получается Иванов Сергей Информатика 3 Иванов Сергей Информатика 4 Иванов сергей Информатика 3 Иванов Сергей История 3 Иванов Сергей История 4 Иванов Сергей История 5 Иванов Сергей Математика 5 Иванов Сергей Математика 4 Иванов Сергей Математика 5 Записи повторяются, как сделать Иванов Сергей информатика 3 Иванов Сергей математика 4 Иванов Сергей история 5 Причем если не пишу поле ball то все нормально, только нет оценок. А если не пишу поле subject , а ball пишу то тоже все нормально только неть названия предметов. А мне надо чтобы и то и то былоо. Если не сложно помоги , пожалуйста
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #6 : 28-10-2008 09:56 » |
|
Aleksandr, критерий(условие) по выбору bal? какую оценку тебе нужно выбрать? максимальную, минимальную, может посчитать среднюю? по предмету? по человеку?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #7 : 28-10-2008 10:10 » |
|
Мне просто нужно вывести фамилии. названия предметов и оценки отдельно для мужчин и женщин. Вообще нужно Чтобы было примерно так Иванов Сергей информатика 5 Иванов Сергей математика 3 Иванов Сергей история 4 Петров Антон Информатика 3 Петров Антон математика 4 Петров Антон история 5 и для женщин Соколова Ира информатика 3 Соколова Ира математика 4 Соколова Ира история 5
|
|
|
Записан
|
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #8 : 28-10-2008 10:23 » |
|
Пишу select distinct family, subject from group, study where sex="м" Получается Иванов информатика Иванов математика Иванов История Петров информатика Петров математика Петров история В принципе все нормально но мне надо чтобы и оценки выводились тоже, но как только добавляю пле ball select distinct family, subject, ball where sex= "м" получается Иванов информатика 3 Иванов информатика 4 Иванов инворматика 5 Иванов математика 5 Ивано математика 3 Иванов математика 4 Иванов история 3 Иванов история 4 Иванов история 5 Почему повторяется как сделать чтобы не повторялось?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #9 : 28-10-2008 10:24 » |
|
Select distinct family, name, ball from group, study where pol="м" and date between {01/01/85} and {01/04/85} order by pol
Кстати, у тебя в запросе не связаны таблицы group и study Таким образом у тебя происходит декартово умножение таблиц.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #10 : 28-10-2008 10:31 » |
|
Круто. Получилось. Спасибо большое выручил, сижу целый день. Ты говоришь у мення в запросе не связаны таблицы group и study , А КАК ИХ СВЯЗАТЬ?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #11 : 28-10-2008 10:34 » |
|
какая структура таблиц? приведи названия полей
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #12 : 28-10-2008 10:51 » |
|
Таблица GROUP СТРУКТУРА ИМЯ ПОЛЯ ТИП ПОЛЯ NSTUD ЧИСЛОВОЕ FAMILY СИМВОЛЬНОЕ POL СИМВОЛЬНОЕ DATE ДАТА ТАБЛИЦА study
NSTUD SUBJECT BALL
А как можно добавить в эту записьSelect distinct family, name, ball from group, study where pol="м" and date between {01/01/85} and {01/04/85} order by pol Поле subject чтобы также выводилось Б но еще и названия предмета ваводилось рядом с оценкой?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #13 : 28-10-2008 11:01 » |
|
Таблица GROUP СТРУКТУРА ИМЯ ПОЛЯ ТИП ПОЛЯ NSTUD ЧИСЛОВОЕ FAMILY СИМВОЛЬНОЕ POL СИМВОЛЬНОЕ DATE ДАТА ТАБЛИЦА study
NSTUD SUBJECT BALL
1. select Family, Subject, Ball from Group left join study on group.nstud=study.nstud where pol="м" and date between {01/01/85} and {01/04/85} order by pol 2. a) select Family, Subject, Ball from Group join study on group.nstud=study.nstud where pol="м" and date between {01/01/85} and {01/04/85} order by pol b) select Family, Subject, Ball from Group, study where pol="м" and date between {01/01/85} and {01/04/85} and group.nstud=study.nstud order by pol
предпочтительней первый вариант тогда выведутся все студенты, которые даже не имеют оценок по предметам
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #14 : 28-10-2008 11:30 » |
|
Пишу как ты сказал select Family, Subject, Ball from Group left join study on group.nstud=study.nstud where pol="м" and date between {01/01/85} and {01/04/85} order by pol Выдает ошибку unrecognised phrase/ keybord in komand Помоги напиши совсеми пробелами команду чтобы до меня дошло?
|
|
|
Записан
|
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #15 : 28-10-2008 11:45 » |
|
Извини, все понятно спасибо большое. Еще вопрос можно? как вычеслить количество студентов, имеющих оценки 3, 4, 5 (запрос с группировкой по полю Ball) Подскажи . пожалуйста
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #16 : 28-10-2008 11:50 » |
|
чего? unrecognised phrase/ keybord in komand
может unrecognised phrase/ keyword in comand
твой select работал?
покажи рабочий select, используя тэги [code][/code]
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #17 : 28-10-2008 11:56 » |
|
Извини, все понятно спасибо большое. Еще вопрос можно? как вычеслить количество студентов, имеющих оценки 3, 4, 5 (запрос с группировкой по полю Ball) Подскажи . пожалуйста
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #18 : 28-10-2008 12:01 » |
|
count
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #19 : 28-10-2008 12:12 » |
|
select ball,count(*), а дальше не пойму Приведи всю строку пожалуйста?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #20 : 28-10-2008 12:27 » |
|
Aleksandr, не приведу - вредный я - смотри в сторону group by
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #21 : 28-10-2008 12:41 » |
|
Спасибо.
|
|
|
Записан
|
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #22 : 28-10-2008 15:28 » |
|
чТО ТО НЕ ВЫХОДИТ, фамилию студента, имеющего максимальный номер полиса вывел. а вычеслить количество студентов, имеющих оценки 3, 4, 5 не получаетсяю. select ball, count(*) from study group by ball. не получается выводит лишь количество троек, четверок, пятерок. А как вычеслить количество студентов имеющих 3, 4, 5
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #23 : 28-10-2008 16:02 » |
|
select ball, count(*) from study,goup where group.nstud=study.nstud group by ball
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #24 : 28-10-2008 16:48 » |
|
select ball, count(*) from study,goup where group.nstud=study.nstud group by ball получается ball Cnt 3 13 4 7 50 10 тоесть посчитывается сколько всего троек, четверок, пятерок. А как вычислить количество количество студентов , имеющих оценки 3, 4, 5
|
|
|
Записан
|
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #25 : 28-10-2008 17:33 » |
|
NSTUD структура таблицы SUBJECT BALL данные таблицы nstud subject ball 1 информатика 3 1 математика 4 1 история 5
2 информатика 5 2 математика 3 2 история 4
необходимо вычеслить количество студентов имеющих оценки 3, 4, 5 ( запрос с группировкой по полю ball)
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
Offline
|
|
« Ответ #26 : 28-10-2008 20:47 » |
|
если позволяет язык (диалект), то пишите так count(distinct nstud)
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #27 : 29-10-2008 05:38 » |
|
SELECT BALL, COUNT(DISTINCT NSTUD) FROM STUDY1 GROUP BY BALL Получилось. Спасибо за помощь
|
|
|
Записан
|
|
|
|
Aleksandr
Интересующийся
Offline
|
|
« Ответ #28 : 29-10-2008 05:38 » |
|
Большое спасибо всем кто мне помогал
|
|
|
Записан
|
|
|
|
|