0

这可能是一个简单的问题,但我缺乏对 SQL 的理解,并且似乎无法在其他地方找到我的答案。我有一个现有的解决方案,在从单个表中获取数据时可以正常工作,但是从两个表中获取时,当两者都包含相同的行名时,就会出现我的问题。这就是我所拥有的:

string Query="SELECT * FROM `Teams`,`Locations` WHERE Teams.LocationId=Locations.LocationId;";
OpenConnection();
MySqlCommand MysqlCommand=new MySqlCommand(Query,MysqlConnection);
MysqlReader=MysqlCommand.ExecuteReader();
while (MysqlReader.Read()) {
  ...
  Team.Size=MysqlReader["Size"].ToString();
  Location.Address=MysqlReader["Address"].ToString();
  Team.Name=MysqlReader["Name"].ToString();
  Location.Name=MysqlReader["Name"].ToString();
  ...
}

我可以轻松获取大小和地址,因为这两个表不共享该行名称。但是 Team 和 Location 表都有一个名为 Name 的 Row,但我只得到 Team 表的 Name。以这种方式提取数据时如何获取位置名称?

我不知道这是否是从 SQL 服务器获取数据的不好方法,或者我是否应该使用 JOIN 来代替,但到目前为止,这对我来说效果很好。

非常感谢。

4

1 回答 1

1

您可以使用列别名解决此问题...在您的选择器中为您的列提供不同的名称作为别名...如下所示

string Query="SELECT Teams.Name as TeamName,Locations.Name as LocationsName,Address ,Address FROM `Teams`,`Locations` WHERE Teams.LocationId=Locations.LocationId;";
OpenConnection();
MySqlCommand MysqlCommand=new MySqlCommand(Query,MysqlConnection);
MysqlReader=MysqlCommand.ExecuteReader();
while (MysqlReader.Read()) {
  ...
  Team.Size=MysqlReader["Size"].ToString();
  Location.Address=MysqlReader["Address"].ToString();
  Team.Name=MysqlReader["TeamName"].ToString();
  Location.Name=MysqlReader["LocationsName "].ToString();
  ...
}
于 2013-05-16T05:40:49.410 回答