Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
Имеются две таблицы
1:
-группа студентов
- дисциплины, проводимые в этой группе

2:
-студент
-дисциплина
- оценка

Не могу стоставить запрос где видно было бы
все дисциплины группы, а рядом оценки только этого студента (если сдал то оценки, если нет то пустые значения)
25 авг 09, 11:24    [7576222]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
left join по студенту ?
-------------------------------------
Jedem Das Seine
25 авг 09, 11:26    [7576233]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
и еще группа студентов определяется как номер студента без порядкового номера

п/р студент № - 17101091004
тогда группа - 17101091
25 авг 09, 11:27    [7576238]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Ознакомьтесь, пожалуйста, с этим: Рекомендации по оформлению сообщений в форуме и повторите попытку.
25 авг 09, 11:27    [7576242]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
SELECT r.idd, d.disc, r.CSel, r.kredit, r.ikontr, Itoc.ids, Itoc.itogc
FROM Itoc RIGHT OUTER JOIN
Disc AS d INNER JOIN
Rup AS r ON d.idd = r.idd ON Itoc.idd = r.idd
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0)



Дисциплины выбираются но оценки выбираются всех студентов данной группы а нужно только конкреного студента

К сообщению приложен файл. Размер - 0Kb
25 авг 09, 11:30    [7576263]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Glory
Member

Откуда:
Сообщений: 104760
alexya


Не могу стоставить запрос где видно было бы

И что/кто вам мешает ?
Сколько времени на решение теста дали ?
25 авг 09, 11:30    [7576265]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
конкретного ? тогда иннер с кодом студента в вере
-------------------------------------
Jedem Das Seine
25 авг 09, 11:32    [7576283]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
До конца дня надо сделать)))) Загвозка в том что елси составить запрос так


SELECT r.idd, d.disc, r.CSel, r.kredit, r.ikontr, Itoc.ids, Itoc.itogc
FROM Itoc RIGHT OUTER JOIN
Disc AS d INNER JOIN
Rup AS r ON d.idd = r.idd ON Itoc.idd = r.idd
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0) and (itoc.ids='17101091004')


выходит только одна строка с 1 предметом и 1 оценкой конкретного студента а надо все дисциплины группы с оценками конкретного студента если не сдал то пустая строка
25 авг 09, 11:33    [7576285]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
не соврал,если нужны все дисциплині )))
то таки лефт , тока в подзапросе должна быть инлайн вью с обрезкой по конкретному студенту
-------------------------------------
Jedem Das Seine
25 авг 09, 11:33    [7576288]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
Maxx, можно по подробней .............
25 авг 09, 11:34    [7576291]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
alexya
До конца дня надо сделать)))) Загвозка в том что елси составить запрос так


SELECT r.idd, d.disc, r.CSel, r.kredit, r.ikontr, Itoc.ids, Itoc.itogc
FROM Itoc RIGHT OUTER JOIN
Disc AS d INNER JOIN
Rup AS r ON d.idd = r.idd ON Itoc.idd = r.idd
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0) and (itoc.ids='17101091004')


выходит только одна строка с 1 предметом и 1 оценкой конкретного студента а надо все дисциплины группы с оценками конкретного студента если не сдал то пустая строка

а в плане у вас все иннер идет :)
25 авг 09, 11:34    [7576298]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
Maxx, в каком плане:?
25 авг 09, 11:35    [7576306]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
что за inline функция
25 авг 09, 11:39    [7576335]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
lexa112002
Member

Откуда:
Сообщений: 88
а так что получится?


Select b.студент, b.оценка, a.наименование_дисциплины from
(Select
дисциплина from таблица_дисциплин where группа = @искомая_группа ) a
inner join таблица_дисциплина_оценка_студент b
a.дисциплина = b.дисциплина
and
b.студент = @искомый_студент
25 авг 09, 11:53    [7576409]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
lexa112002, а так ничего не получиться

select i.ids, i.itogc, r.idd
from (select r.idd, d.disc, r.CSel, r.kredit, r.ikontr
FROM rup r , disc d
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0)) rup
inner join itoc as i ON r.idd=Itoc.idd
and itoc.ids='17101091004'

вообще не работает
25 авг 09, 12:05    [7576468]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
После исправлений и доведения запроса до ума

select i.ids, i.itogc, r.idd
from (select r.idd, d.disc, r.CSel, r.kredit, r.ikontr
FROM rup r , disc d
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0))
r inner join itoc as i ON r.idd=I.idd
and i.ids='17101091004'

вышло 24 строки состящих из одной дисциплины и одной оценки этого студента
25 авг 09, 12:08    [7576480]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select
a.student
,a.predmet
,b.ocenka
from students a
left outer join (
select student, predmet, ocenka
from tabel
where student = @student
) b on a.student = b.student and a.predmet = b.predmet
where a.student = @student

-------------------------------------
Jedem Das Seine
25 авг 09, 12:11    [7576496]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
Glory
Member

Откуда:
Сообщений: 104760
SELECT r.idd, d.disc, r.CSel, r.kredit, r.ikontr, Itoc.ids, Itoc.itogc
FROM Disc AS d  
INNER JOIN Rup AS r ON d.idd = r.idd 
LEFT OUTER JOIN Itoc ON Itoc.idd = r.idd and (itoc.ids='17101091004')
WHERE (r.CSel = 1) AND (r.idsg = '17101091') AND (r.ikontr & 1 <> 0)
25 авг 09, 12:12    [7576505]     Ответить | Цитировать Сообщить модератору
 Re: CРОЧНО Нужен запрос!  [new]
alexya
Member

Откуда:
Сообщений: 450
Glory, большое спасибо ...ура!!!!!!! все работает!!!!!!!!!!!! большое спасибо)))))
25 авг 09, 12:14    [7576518]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить