我用C#后端学习ASP.NET。我正在尝试运行"查询查询"。 (至少那是我所教的内容,这是在大学里用PHP调用的。)
我有一个通过SQL语句检索的记录集(特定学生的成绩)。该声明中有一个“学生证”'和他们的成绩。现在在单独的数据库中,在表格中我有学生姓名和学生证。
我希望数据库提取成绩记录,然后查询学生姓名表,并根据检索到的记录学生ID显示学生的姓名。
我知道我可以为学生姓名创建一个新的记录集,然后将检索到的ID的查询参数传递给新的SQL查询。这格式怎么样?有最好的做法吗?
以下是我用来拉取学生成绩的方法。
<asp:SqlDataSource ID="rs_ViewGradeData" runat="server"
ConnectionString="<%$ ConnectionStrings:PDACConnectionString %>"
SelectCommand="SELECT *
FROM [tblGrades] AS t
WHERE ([studentID] = @studentID)">
<SelectParameters>
<asp:QueryStringParameter Name="studentID" QueryStringField="sid" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
学生数据库位于同一台服务器上,只是一个不同的数据库。
是否不可能只从上面的查询中提取studentID并将其用作下面查询的参数?我在上面的查询中使用了AS,并尝试在下面使用它。
<asp:SqlDataSource ID="rs_Students" runat="server"
ConnectionString="<%$ ConnectionStrings:DBStudentsConnectionString %>"
SelectCommand="SELECT [userID]
, [userFName]
, [userLName]
FROM [tblStudents]
WHERE [userID] = @[t.studentID]"
OnSelecting="SqlDataSource1_Selecting">
<SelectParameters>
<asp:FormParameter FormField="studentID" Name="studentID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
答案 0 :(得分:0)
SELECT g.StudentId, g.Grade, sn.Name
FROM db1.dbo.tblGrades g
INNER JOIN db2.dbo.tblStudentName sn
ON g.StudentId = sn.StudentId
WHERE (g.studentID = @studentID)