【问题标题】:How to query twice at once from one table with inner join SQL ASP.NET如何使用内部连接 ​​SQL ASP.NET 从一个表中一次查询两次
【发布时间】:2022-01-20 15:10:33
【问题描述】:

我有两个表,第一个名为 TFile 的表包含两列:FromCity 和 ToCity。 它们将具有不同的值,但来自第二个表 (TCity) 的一列,特别是来自名为 CityName.Second 表名称 TCity 的列,它们有两列:IdCity 和 CityName。

我的问题我需要显示他们从第二个表 FromCity 和 ToCity 获得的两列的数据,并使用内部连接两次。

我使用这段代码来做到这一点:

SqlCommand comm = new SqlCommand("select * from TFile " +
                            "inner join TCity AS A ON TFile.FromCity = A.IdCity " +
                                   "inner join TCity  AS B  ON TFile.ToCity  = B.IdCity " + " WHERE " + "TFile.Name", con);

然后将数据显示给用户:

SqlDataReader srd = comm.ExecuteReader();


                if (srd.HasRows)
                {
                  
                    while (srd.Read())
                    {
                   
                       
    //FromCity
  TextFrom.Text = srd["CityName"].ToString();


//ToCity
 TextTo.Text = srd["CityName"].ToString();//=======================here problem

}

}


在数据显示的第一行中,我可以得到城市的名称,但如果我在第二行重复,它只会重复数据。这里有问题。我不能使用不同的名称来访问第二个查询,而不是字段名称 CityName。这是我显示城市名称的第二个表中的字段名称。

如何访问此查询中的数据:

"inner join TCity  AS B  ON TFile.ToCity  = B.IdCity

因此,如果我访问它,则可以在此行中显示第二个数据:

TextTo.Text = srd["CityName"].ToString();

如何解决这个问题?

【问题讨论】:

    标签: sql asp.net


    【解决方案1】:

    我敢打赌,您需要创建字段别名来区分来自同一张表上多个连接的值。顺便说一句,请确保在使用这些类型的查询时保护自己免受“SQL 注入”的影响。如果您不知道“SQL 注入”是什么,请花点时间查一下。

    "select FromCityName=A.CityName, ToCityName=B.CityName, * from TFile "
    

    //FromCity
    TextFrom.Text = srd["FromCityName"].ToString();
    
    //ToCity
    TextTo.Text = srd["ToCityName"].ToString();//=======================here problem
    

    【讨论】:

      猜你喜欢
      • 2020-10-25
      • 2020-11-05
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 2019-06-10
      • 2021-12-19
      • 1970-01-01
      • 2019-08-10
      相关资源
      最近更新 更多