Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PostgreSQL]Обновление выборочных данных 
:(
    Опции темы
Animator
Дата 3.6.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



Запрос разделяет каждую группу в которой больше чем 31 человек на две. В одну из групп внести студентов с рейтингом со второй дисциплины выше среднего.
Но, данный запрос корректен в том случае если на каждом курсе только одна группа.
Помогите переписать данный запрос так чтобы он работал с несколькими группами

UPDATE Student SET GNum = GNum + 1 WHERE Kod IN(SELECT Kod FROM Student S1
                                                                                       WHERE S1.Spec = S2.Spec AND S1.GNum = S2.GNum)
                                                                                       AND Kod IN
                                                                                       (SELECT Kod FROM Rating
                                                                                        WHERE R_Disc2 > 
                                                                                        (SELECT AVG(R_Disc2) FROM Rating
                                                                                        WHERE Kod IN
                                                                                         SELECT Kod FROM Student S3
                                                                                          WHERE S3.Spec = S1.Spec AND S3.GNum = S1.GNum)));
PM MAIL ICQ   Вверх
skyboy
Дата 3.6.2008, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260




M
skyboy
Будь добр, приведи тему в порядок

1. Указываешь СУБД, желательно - версию. Тут не место для игры в "Угадай-ка"
2. Оборачиваешь sql-код в тег "code". Чай не первое сообщение на форуме.
3. Приводишь show create table и insert на пару десятков записей, чтоб люди, желающие тебе помочь, не напрягались хотя бы с созданием тестовой таблицы

Добавлено через 2 минуты и 19 секунд
Цитата(skyboy @  2.6.2008,  23:27 Найти цитируемый пост)
Приводишь show create table и insert на пару десятков записей

тем более, что таблица у тебя не одна и назначение полей не кристально ясно.
PM MAIL   Вверх
Animator
Дата 3.6.2008, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



А сорри. Всё забыл. 
1. СУБД PostgreSQL 8.3 
2,3...
Код

CREATE TABLE Rating
(Kod INT NOT NULL CHECK(Kod > 0) PRIMARY KEY,
R_DISC1 INT DEFAULT 0,
R_DISC2 INT DEFAULT 0,
Spec CHAR(2) NOT NULL UNIQUE CHECK(Spec IN('ОИ','ОМ','ОС','ОП'))
CHECK ((R_DISC1 BETWEEN 0 AND 100) AND 
    (R_DISC2 BETWEEN 0 AND 100)));

CREATE TABLE Speciality
(Sp_Kod CHAR(11) NOT NULL PRIMARY KEY CHECK(Sp_Kod LIKE'_.____.____'),
Sc_Direct CHAR(20) NOT NULL,
Sp_Name CHAR(40) NOT NULL UNIQUE,
Spec CHAR(2) NOT NULL UNIQUE 
CHECK(Spec IN('ОИ','ОМ','ОС','ОП')));

CREATE TABLE Student 
(Kod INT NOT NULL CHECK(Kod > 0) PRIMARY KEY,
SecondName CHAR(30) NOT NULL,
First_Name CHAR(20) NOT NULL,
Patronymic CHAR(30),
SNum SMALLINT NOT NULL,
Spec CHAR(2) NOT NULL CHECK(Spec IN('ОИ','ОМ','ОС','ОП'))
        REFERENCES Speciality(Spec),
GNum INT NOT NULL,
UNIQUE(Spec, GNum,SNum));

INSERT INTO Speciality VALUES('8.4087.0201','Прикл мат','Прикл мат', 'ОС');
INSERT INTO Speciality VALUES('7.0183.1111','Экономика','Экономическая кибернентика', 'ОИ');
INSERT INTO Speciality VALUES('7.0183.2222','Менеджемент','Менеджемент', 'ОМ');

INSERT INTO Student VALUES('1','Малахов', 'Евгений','Валериевич','12','ОС','842');
INSERT INTO Student VALUES('2','Туркин', 'Андрей','Александрович','13','ОИ','851');
INSERT INTO Student VALUES('3','Левит', 'Вячеслав','Батькович','15','ОМ','123');
INSERT INTO Student VALUES('4','Бровков', 'Владимир','Георгиевич','18','ОМ','982');

INSERT INTO Rating VALUES('1','100','100','ОС');
INSERT INTO Rating VALUES('2','75','80','ОИ');
INSERT INTO Rating VALUES('3','65','70','ОМ');


PM MAIL ICQ   Вверх
Animator
Дата 3.6.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



Помогите кто-то с запросом. Неужели никто не знает?
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.