Преобразовать два столбца в значения из другой таблицы? - PullRequest
0 голосов
/ 21 апреля 2020

поэтому у меня есть следующая таблица:

personID    grade   classID
   13          7    147
   13          7    456
   19          8    123
   19          8    789
   25          7    123
   25          7    456
   25          7    789
   82          8    147
   82          8    456
   155         7    456
   155         7    789

Я бы хотел сохранить столбец оценки, но чтобы personID и classID были сопоставлены с другой таблицей, чтобы получить personName и ClassName - каждая из них - разные таблицы , но одна отдельная таблица с именем человека также имеет идентификатор человека, а таблица с именем класса имеет classID, что упрощает ее.

Таблица результатов должна по-прежнему иметь длину в 11 столбцов, ее просто следует заменить на имена людей и имя класса для каждой строки.

Ответы [ 2 ]

3 голосов
/ 21 апреля 2020

Это делается с помощью объединения?

Да. Основная идея:

select
    p.personID,
    p.personName,
    g.grade,
    c.classID,
    c.className
from grades g 
inner join persons p on p.personID = g.personID
inner join classes c on c.classID = g.classID

Это предполагает следующие структуры данных:

persons: 
    personID
    personName

classes:
    classID
    className

grades:
    personID   --> foreign key to persons(personID)
    grade
    classID    --> foreign key to classes(classID)
0 голосов
/ 21 апреля 2020
Select * from 
gradeTable g
JOIN 
personTable p 
ON g.PersonID = p.PersonID
JOIN 
classTable c
ON g.ClassID = c.ClassID
...