我正在使用 ASP.NET C# 来输出 SQL Server 数据库查询的结果,并试图让结果在每个法院仅显示一条记录,但同时也显示每个法院的多个联系方式。
相关表格为(PK 为粗体,FK 为斜体):
法院(Court_ID、Court_Name、备注、城镇、邮政编码)
联系人(Contact_ID、Contacts_Name、Contacts_no、*Court_ID*、*Court_Contact_Type_ID*)
Contact_Type ( Court_Contact_Type_ID , Court_Contact_Type_Desc)
目前,我的问题是,每个法院的联系人数量与每个法院的联系次数一样多,但我会多次重复每个法院的详细信息。我知道它为什么这样做,但我不知道如何让它按照我想要的方式工作。
我不确定解决方案是在 SQL 查询本身(可能通过嵌套...?)还是在 C# 代码中,因为我使用的是“HasRows”。我在下面包含了两个代码片段。
string myQuery = "SELECT Court_Name, Town, Postcode, Note, Contacts_Name, Contacts_no, Court_Contact_Type_Desc " +
"FROM Court C, Contacts CON, Contact_type CONT " +
"WHERE C.Court_ID = CON.Court_ID AND CON.Court_Contact_Type_ID = CONT.Court_Contact_Type_ID AND C.Court_ID = '3' ";
SqlConnection connection = new SqlConnection(connStr);
SqlCommand myCommand = new SqlCommand(myQuery, connection);
SqlDataReader myDataReader;
connection.Open();
myDataReader = myCommand.ExecuteReader();
if (myDataReader.HasRows)
{
while (myDataReader.Read())
{
string court_name = myDataReader["Court_Name"].ToString();
string court_town = myDataReader["Town"].ToString();
string court_pcode = myDataReader["Postcode"].ToString();
string court_note = myDataReader["Note"].ToString();
string court_contact_name = myDataReader["Contacts_Name"].ToString();
string court_contact_desc = myDataReader["Court_Contact_Type_Desc"].ToString();
string court_contacts_no = myDataReader["Contacts_no"].ToString();
Response.Write("<strong>" + court_name + "</strong><br>" + court_town + "<br>" + court_pcode + "<p>" + court_note + "</p>" + "<p>" + court_contact_name + " - " + court_contact_desc + " : " + court_contacts_no + "</p>");
}
}
最终输出应如下所示:
阿伯加文尼地方法院
阿伯加文尼
NP7 5DL
该法庭仅对听证开放。额外的法庭笔记......
联系人
联系人姓名 1 - 代理法院经理:01633 64xxxx
联系人姓名 2 - 代理办公室经理:01633 64xxxx
联系人姓名 3 - 代理名单官员:01633 64xxxx
联系人姓名 4 - 法官书记员:01633 64xxxx
一如既往地感激地收到任何帮助!
干杯