L oop через таблицу на основе нескольких условий - PullRequest
1 голос
/ 12 января 2020

Таблица учеников

student_id  student_name
1           John
2           Mary

Таблица оценок

student_id   year   grade_level  school        Course    Mark
  1          2015    10          Smith High     Algebra   95
  1          2015    10          Smith High     English   96
  1          2016    11          Smith High     Geometry  85
  1          2016    11          Smith High     Science   88
  2          2015    10          Smith High     Algebra   98
  2          2015    10          Smith High     English   93
  2          2016    11          Smith High     Geometry  97
  2          2016    11          Smith High     Science   86

Я пытаюсь показать результаты за каждый год и класс, который ученик посещал с оценкой.

Итак, конечный результат, который я ищу, выглядит примерно так:

[student_id1] [year1] [grade1] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...
[student_id1] [year2] [grade2] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...
[student_id2] [year1] [grade1] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...

Это все go в одном столбце / строке. Таким образом, в этом конкретном примере это будет мой результат:

1 2015 10 Smith High 
Algebra 95
English 96
1 2016 11 Smith High 
Geometry 85
Science 88
2 2015 10 Smith High 
Algebra 98
English 93
2 2016 11 Smith High 
Geometry 97
Science 86

Так что каждый раз, когда меняется идентификатор ученика, год, класс или название школы, у меня будет строка для этого и l oop через занятия в этой группе. И все это будет в одном столбце / строке.

Это то, что я имею до сих пор, но я не уверен, как я могу правильно пройти oop через курс и оценки для каждой группы. Я был бы признателен, если бы меня указали в правильном направлении.

select s.student_id + '' + year + '' + grade_level + '' + school 
from students
join grades on students.student_id = grades.student_id

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Если вы хотите сделать это в вашем SQL Окружении, это зависит от используемой вами Системы управления базами данных.

Например, если вы используете Transact SQL, вы можете попробовать посмотреть на эта ссылка .

Обычно такие циклы и взаимодействия выполняются на языке программирования, который связан с SQL DB.

В любом случае, вам следует обратить внимание на Хранимые процедуры и курсоры, если вы действительно хотите сделать это в SQL.

0 голосов
/ 12 января 2020

Вы пытаетесь смешать презентацию с извлечением данных из таблиц базы данных. Зацикливание результирующего набора в sql может быть достигнуто с помощью курсора, но это не рекомендуется. Вам лучше получить необходимые данные, используя два запроса, а затем распечатать их на выбранном вами языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...