Sybase SQL Dynamic Select (присоединяется?) К реляционной базе данных - PullRequest
2 голосов
/ 05 апреля 2011

Я пишу веб-страницу, на которой отображаются оценки учеников в формате старой книги оценок, то есть имя ученика, затем их баллы за каждое задание (подряд), а затем повторяется по одной строке для каждого ученика.Мои таблицы настроены следующим образом (сокращено до необходимой информации):

Таблица: назначение* Assignment_PK (первичный ключ)* Assignment_Name

Таблица: студент* Student_PK (первичный ключ)* Student_Name

Таблица: StudentAssignment* SA_PK (первичный ключ* Student_FK (Student.Student_PK)* Assignment_FK (Assignment.Assignment_PK)* Score

Я пытаюсь написать инструкцию SELECT, в которой будут напечатаны имя и балл ученика для каждого задания.Проблема, с которой я сталкиваюсь, заключается в том, что, если я ВЫБИРАЮ Счет в качестве столбца, я получаю балл только за одно назначение, потому что в моем WHERE Assignment_FK = Assignment_PK позволяет мне выбрать только один балл для столбца.

IЯ довольно новичок в реляционных базах данных, и я мог бы действительно использовать некоторую помощь для лучшего способа решения этой проблемы.Одно из предложений состояло в том, чтобы я написал инструкцию SELECT, чтобы выбрать всех учеников в таблицу, затем создал строку foreach в таблице, чтобы она выбрала оценки и поместила их в соответствующий столбец.Это похоже на медленный и ненужный процесс.Есть ли более простой способ использования JOINS?Или лучше написать SELECT?

1 Ответ

1 голос
/ 05 апреля 2011

Это должно получить вам необходимые данные. Затем вы можете исследовать поворот его в желаемый формат отображения, который может быть проще в вашем приложении, чем в базе данных.

SELECT s.Student_Name, a.Assignment_Name, sa.Score
    FROM Student s
        INNER JOIN StudentAssignment sa
            ON s.Student_PK = sa.Student_FK
        INNER JOIN Assignment a
            ON sa.Assignment_FK = a.Assignment_PK
    ORDER BY s.Student_Name, a.Assignment_Name
...