Вывод данных в datagrid из разных таблиц
есть БД в нем хранятся таблицы связанны между собой, есть таблица студенты (student), группы(course) и оценки(estimation). Нужно в DATAGRID вывести столбцы по предметам, все студенты из групп и их оценки по предмету
вывожу столбцы следующим образом
private void LoadColumn()
{
db.OpenConnection();
OleDbCommand command = new OleDbCommand($"select * from predmets where `id_course` = {group_id}", db.GetConnection());
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
DataGridTextColumn textColumn = new DataGridTextColumn()
{
Binding = new Binding("predmet_id"),
Header = GetPredmetId(reader.GetInt32(2)),
IsReadOnly = false
};
GroupDataGrid.Columns.Add(textColumn);
}
}
db.CloseConnection();
}
а студентов
db dbase = new db();
dbase.OpenConnection();
OleDbCommand command = new OleDbCommand($"select * from student where `course_id` = {group_id}", dbase.GetConnection());
using (var reader = command.ExecuteReader())
while (reader.Read())
{
Grades.Add(new Grade()
{
id = reader.GetInt32(0),
student_name = reader.GetString(2),
grade = GetGrade(group_id, reader.GetInt32(0), GetPredmet(group_id)),
predmet_id = GetPredmet(group_id)
});
}
GroupDataGrid.ItemsSource = Grades;
dbase.CloseConnection();
есть Data grid
<DataGrid Grid.Row="1"
Name="GroupDataGrid"
MaxColumnWidth="400"
ColumnWidth="*"
CanUserAddRows="False"
SelectionUnit="FullRow"
SelectionMode="Single"
Loaded="GroupDataGrid_Loaded"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding id}" Header="Id" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding student_name}" Header="ФИО" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
Ответы (1 шт):
Не знаю правильно ли я понял, что именно надо вывести, но сделал вот так + извиняюсь что это не access (это MSSQL), но думаю там особой разницы нет, если я не прав, то удалю ответ.
SELECT dbo.predmets.id_predmet, dbo.student.fullname, dbo.estimation.student_id, dbo.estimation.predmet_id, dbo.estimation.ball, dbo.predmets.id_course
FROM dbo.predmets
INNER JOIN
dbo.student ON dbo.predmets.id = dbo.student.id
INNER JOIN
dbo.estimation ON dbo.predmets.id = dbo.estimation.id
В любом случае надеюсь пример понятен, если что задавай вопросы в комментариях, буду исправлять ответ.
И да, очень прошу тебя, не миксуй название полей на английском и русском, fullname и ball, predmet выглядят просто смешно и нелепо.
