ASP.NET C# を使用して SQL Server データベース クエリの結果を出力し、裁判所ごとに 1 つのレコードのみを表示する結果を取得しようとしていますが、裁判所ごとに複数の連絡先の詳細も表示されます。
関連するテーブルは次のとおりです (ボールド体の PK、イタリック体の FK)。
裁判所 ( Court_ID , Court_Name, Note, Town, Postcode)
連絡先 ( Contact_ID , Contacts_Name, Contacts_no, *Court_ID*, *Court_Contact_Type_ID*)
Contact_Type ( Court_Contact_Type_ID , Court_Contact_Type_Desc)
現在、私の問題は、各裁判所と同じ数の連絡先について、各裁判所の詳細を複数回繰り返すことです。なぜそれをしているのかはわかっていますが、思い通りに機能させる方法はわかりません。
'HasRows' を使用しているため、解決策が SQL クエリ自体にあるのか (ネストによって解決されるのでしょうか...?)、C# コードにあるのかわかりません。以下に両方のコード スニペットを含めました。
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
いつものように、どんな助けもありがたく受け取りました!
乾杯