Я бы хотел принять все предложения в C # или VB.NET.
У меня есть схема БД, как на картинке ниже. Я также включаю сценарий базы данных здесь @ http://pastebin.com/pDC25Gkm
В таблице Student столбцы CountryId и RoomId допускаются равными нулю. Потому что некоторые записи еще не содержат информации о комнате и стране.
Кроме того, у некоторых студентов нет сочинений.
Я делаю совместный запрос со всеми таблицами. Я хочу выбрать всех студентов
спроецировать результат так:
Требуемый результат запроса.
Вот мой текущий запрос, который дает результат, подобный изображенному ниже:
Dim db As New DBDataContext
Dim query = From st In db.Students _
Join c In db.Countries On c.Id Equals st.Id _
Join r In db.Rooms On r.Id Equals st.RoomId _
Join b In db.Buildings On b.Id Equals r.BuildingId _
Join es In db.Essays On es.StudentId Equals st.Id _
Select st, c, r, b, es
'put query result into datatable
Dim dt = New DataTable("Result")
dt.Columns.Add("Id", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Room", GetType(String))
dt.Columns.Add("Building", GetType(String))
dt.Columns.Add("Country", GetType(String))
dt.Columns.Add("Essay", GetType(String))
For Each q In query
dt.Rows.Add(New Object() {q.st.Id, q.st.FullName, q.r.RoomNumber, q.b.BuildingName, q.c.CountryName, q.es.Eassay})
Next
'bind to list view
lvStudent.DataSource = dt
lvStudent.DataBind()
текущий результат запроса
Я получил только один результат, потому что у меня есть (2) запись William NoMan в каждой таблице. Но я ничего не понимаю о других, таких как (3) Sync Master, у которого есть все, кроме RoomId.
Что мне нужно, чтобы изменить запрос выше, чтобы он дал мне всех учеников, как показано на изображении разыскиваемого запроса выше? Спасибо.