powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SQL
7 сообщений из 7, страница 1 из 1
SQL
    #36052326
r00k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос такого плана, есть таблица в которой, допустим 3 поля StudentID, DisciplinID и Rating. Нужно пробежаться по всем строкам Rating, данного StudentID, если хоть одна строчка Rating - нул, то - действия, если все заполнены то - действия.
С УВ!
...
Рейтинг: 0 / 0
SQL
    #36052391
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну запрос типа совсем простой ты не шутишь?

Код: plaintext
1.
2.
3.
4.
SELECT [StudentID]
      ,[DisciplineID]
      ,[Raiting]
  FROM [Test].[dbo].[Students]
Where ([Raiting] IS NULL)

Потом анализируешь что получил

~'J'~
...
Рейтинг: 0 / 0
SQL
    #36052400
r00k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FattyНу запрос типа совсем простой ты не шутишь?

Код: plaintext
1.
2.
3.
4.
SELECT [StudentID]
      ,[DisciplineID]
      ,[Raiting]
  FROM [Test].[dbo].[Students]
Where ([Raiting] IS NULL)

Потом анализируешь что получил

~'J'~

нет, не это мне надо, смотри студент сдает сессию, он на определенном семестре, дисциплины подчинены семестру, т.е. таблица соответствия ID, StudentID, SеmestrID.

теперь получаем (сорр не полностью в первом посте раскрыл вопрос) таблица успеваемости
id, StudentID, DisciplineID, SеmestrID, Rating

мне нужно просмотреть все строчки Rating текущего семестра, т.е . SеmestrID из таблицы соответствия и после того как я увижу что все строчки заполнены буду делать, update таблицы соответствия.
С УВ!
...
Рейтинг: 0 / 0
SQL
    #36052431
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй такую процедуру
измени названия соответственно твоим
и добавь поля какие надо
(Test-название базы
Students-название таблицы)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-- Select from table

Use Test
GO

-- Select is nullable Raiting
CREATE PROCEDURE OUT_NORATING (@StudentID smallint OUTPUT,
@Raiting smallint OUTPUT)
 AS
 SELECT @StudentID = StudentID, @Raiting = Raiting
 FROM Students WHERE (Raiting IS NULL)
 IF @@ROWCOUNT = 0
 RETURN 0
 ELSE
 RETURN 1
 GO

~'J'~
...
Рейтинг: 0 / 0
SQL
    #36052437
Фотография Fatty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или так пошустрее будет
только запрос сам перепиши

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
                        string conStr =
                "Data Source=.\\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True";
                        using (SqlConnection conn = new SqlConnection(conStr))
                        {
                            conn.Open();
                            SqlCommand cmd = new SqlCommand("SELECT [StudentID], [Raiting] FROM Students WHERE ([Raiting] IS NULL)", conn);
                            SqlDataReader sqlRead = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                            if (sqlRead.HasRows)
                            {
                                MessageBox.Show("В списке есть неаттестованные остолопы");
                            }
                            else
                            {
                                MessageBox.Show("Все в ажуре");
                            }
                            sqlRead.Close();
                        }

~'J'~
...
Рейтинг: 0 / 0
SQL
    #36052443
r00k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо что помогаете!
у меня вот вышла такая загагулина, ток чет она не работает(

ALTER PROCEDURE [dbo].[Transfer@]

AS
BEGIN


declare @sem int,
@STID int;
select @sem=( SELECT dbo.Semester.SMID
FROM dbo.Semester INNER JOIN
dbo.StudentsSemester ON dbo.Semester.SMID = dbo.StudentsSemester.SMID
where dbo.StudentsSemester.STID=@STID
GROUP BY dbo.Semester.SMID);
declare @n int;
select n=1;
while @n<( SELECT COUNT(dbo.Students.STID) AS Expr1
FROM dbo.Semester INNER JOIN
dbo.StudentsSemester ON dbo.Semester.SMID = dbo.StudentsSemester.SMID INNER JOIN
dbo.Students ON dbo.StudentsSemester.STID = dbo.Students.STID)
begin
if(
SELECT count (sw.[rating])
FROM [do2009].[dbo].[StudentsWork] sw, dbo.StudentsSemester ss
where ss.STID=@n and ss.SMID=@sem and rating=0)>0
--then
begin
update StudentsSemester
SET dbo.StudentsSemester.SMID = dbo.StudentsSemester.SMID+2
from dbo.StudentsSemester
where dbo.StudentsSemester.STID=@n and dbo.StudentsSemester.SMID=@sem

end
end
end

на выходе 0 а n=1
...
Рейтинг: 0 / 0
SQL
    #36052716
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Пользуйтесь [ code ]/[ src ]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
ALTER PROCEDURE [dbo].[Transfer@]
AS
BEGIN
  declare
    @sem int,
    @STID int;

  select @sem=(SELECT
                 dbo.Semester.SMID
               FROM
                 dbo.Semester
                 INNER JOIN dbo.StudentsSemester ON dbo.Semester.SMID = dbo.StudentsSemester.SMID
               where
                 dbo.StudentsSemester.STID=@STID
               GROUP BY
                 dbo.Semester.SMID);

  declare
    @n int;

  select n= 1 ;

  while @n<(SELECT
              COUNT(dbo.Students.STID) AS Expr1
            FROM
              dbo.Semester
              INNER JOIN dbo.StudentsSemester ON dbo.Semester.SMID = dbo.StudentsSemester.SMID
              INNER JOIN dbo.Students ON dbo.StudentsSemester.STID = dbo.Students.STID)
    begin
      if(SELECT
           count(sw.[rating])
         FROM
           [do2009].[dbo].[StudentsWork] sw,
           dbo.StudentsSemester ss
         where
           ss.STID=@n
           and ss.SMID=@sem
           and rating= 0 )> 0 
        begin
          update
            StudentsSemester
          SET
            dbo.StudentsSemester.SMID = dbo.StudentsSemester.SMID+ 2 
          from
            dbo.StudentsSemester
          where
            dbo.StudentsSemester.STID=@n
            and dbo.StudentsSemester.SMID=@sem
        end
    end
end
2. Это Вы сами такое родили или визарды всякие-разные ?
3. Это ВСЕ или Вы купировали?
4.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  declare
    @sem int,
    @STID int;

  select @sem=(SELECT
                 dbo.Semester.SMID
               FROM
                 dbo.Semester
                 INNER JOIN dbo.StudentsSemester ON dbo.Semester.SMID = dbo.StudentsSemester.SMID
               where
                 dbo.StudentsSemester.STID=@STID
               GROUP BY
                 dbo.Semester.SMID);
Ну и GROUP BY м.б. стоит заменить на distinct ?
5.
Код: plaintext
1.
2.
declare @n int;
select n= 1 ;
Это по Вашему творению. А вообще, если Вы все изложите четко, ясно и однозначно , как инженер, а не домохозяйка, то, скорее всего Ваша хотелка м.б. сведется к одному-единственному запросу...

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]