在之前已經給大家簡單的介紹了單表查詢,但是往往在頁面上要顯示的信息是不僅僅只來源於一個表的。簡單的舉個例子,一個學生的個人信息,是來源學生表,但是也想知道他是哪一個學校的,讀的什麼專業,哪一個年級哪一個班的,這樣的話,牽涉到的就不只是學生表了,還有專業表年級表班級表等等,這麼多個表,那豈不是要寫很多個查詢語句?No,一個就夠了,這個時候就需要用到我們的聯合查詢。
我們先來看下這三個表:PW_Student(學生表),SYS_Grade(年級表),SYS_Academe(學院表)
可以看到它們之間時通過主鍵ID連接在一起的。把鼠標放上去可以看到有個提示,INNER JOIN :PW_Student.AcademeID = SYS_Academe.AcademeID。
廢話少說,說重點,怎麼寫聯合查詢,非常簡單,四個單詞搞定:join(這裏放你自定義的表名字b) in(具體表名) on (表a的哪個字段)equals(連接表b的相同字段)。
public ActionResult Select()
{
var Students = (from tbStudent in myModel.PW_Student
join tbAcademe in myModel.SYS_Academe on tbStudent.AcademeID equals tbAcademe.AcademeID
join tbGrade in myModel.SYS_Grade on tbStudent.GradeID equals tbGrade.GradeID
select new
{
StudentName = tbStudent.StudentName,
AcademeName = tbAcademe.AcademeName,
GradeName = tbGrade.GradeName
}).ToList();
return Json(Students, JsonRequestBehavior.AllowGet);
}
如果還想查詢更多表的信息,也是在後面再加上去就行了,一些剛開始學習MVC的人看到一些又臭又長的查詢語句就覺得很頭大,其實沒什麼好怕的,解剖開來也就那麼一回事,結構非常的簡單。
最後還要說明一下,這個Select new裏面放的是我已經定義好了的字段,就是想要在頁面上顯示的字段,
爲什麼要定義?
不不不,你必須要定義這些字段,不然怎麼來接受這些數據啊
這個字段也不是說隨便定義吧,是什麼類型就是什麼類型的,門號對不上是會出錯的,這個數據類型是常識了。