Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 19:01   #1
Demares
 
Регистрация: 08.06.2010
Сообщений: 4
По умолчанию Вывести записи из трех таблиц

Всем привет!
Имеется три таблицы MS SQL:
Первая "Студент" и содержит поля
СтудентID | Фамилия | Имя | Отчество | Пол
Вторая "Группа":
ГруппаID | Название
Третия "Группа_студентов"
Группа_студентовID | ГруппаID | СтудентID

Нужно вывести записи в виде:
Название группы | Количество мальчиков | Количество девочек

Пожалуйста помогите!
Demares вне форума Ответить с цитированием
Старый 01.03.2011, 21:36   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SELECT MAX(Группа.Название) AS Название,
    SUM(CASE WHEN Студент.Пол='М' THEN 1 ELSE 0 END) AS мальчиков, 
    SUM(CASE WHEN Студент.Пол='Ж' THEN 1 ELSE 0 END) AS девочек
  FROM Студент,Группа,Группа_студентов
  WHERE Группа.ГруппаID=Группа_студентов.ГруппаID AND
         Группа_студентов.СтудентID=Студент.СтудентID
  GROUP BY Группа.ГруппаID
что-то вроде этого
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.03.2011, 00:06   #3
Demares
 
Регистрация: 08.06.2010
Сообщений: 4
По умолчанию

Спасибо, выручил.
А что означает в коде MAX(Группа.Название)? Сама суть, что делается. С суммами понятно, а вот с максимум...

Последний раз редактировалось Demares; 02.03.2011 в 00:53.
Demares вне форума Ответить с цитированием
Старый 02.03.2011, 08:23   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В SELECTE-е поля не из списка GROUP BY могут быть только аргументами агрегатных функций (MAX,MIN, COUNT, SUM и т.п.)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.03.2011, 08:34   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Аватар
Ну а почему бы не добавить Группа.Название в группировку?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2011, 08:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Stilet +1

я тоже не вижу необходимости (в данном случае) писать MIN или MAX когда можно легально добавить название группы в группировку и всё!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2011, 13:30   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
я тоже не вижу необходимости (в данном случае) писать MIN или MAX когда можно легально добавить название группы в группировку и всё!
В принципе можно, запрос от этого сложнее или проще не станет, а результат тот же самый.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
select-запрос из трех таблиц AJlEKCA БД в Delphi 10 19.01.2011 01:38
Вывести данные при трех условиях. segail Microsoft Office Excel 11 07.12.2010 22:36
Удаление записи в одной из двух таблиц ViNcHeStEr БД в Delphi 1 03.04.2010 12:04
как свзять в Дельфи более трех таблиц воедино ahvahsky2008 Помощь студентам 1 10.03.2010 11:36
Записи. Массив таблиц? noskovgleb Помощь студентам 3 25.10.2009 19:52