C# 使用MysqlReader从多个表获取数据

C# 使用MysqlReader从多个表获取数据,c#,mysql,sql,C#,Mysql,Sql,这可能是一个简单的问题,但我对SQL缺乏了解,似乎无法在别处找到答案。 我有一个现有的解决方案,当从一个表中获取数据时效果很好,但是当从两个表中获取数据时,当两个表都包含相同的行名称时,我的问题就出现了。 这就是我所拥有的: string Query="SELECT * FROM `Teams`,`Locations` WHERE Teams.LocationId=Locations.LocationId;"; OpenConnection(); MySqlCommand MysqlComman

这可能是一个简单的问题,但我对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的行,但我只得到Team表的名称。以这种方式提取数据时,如何获取位置名称


我不知道这是否是一种从SQL server获取数据的坏方法,或者我是否应该使用JOIN,但到目前为止,这对我来说效果很好


非常感谢。

您可以使用列别名来解决此问题…在您的选择中为列指定不同的名称作为别名…如下所示

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();
  ...
}

“或者如果我应该改用JOIN”-您已经在使用JOIN了。这只是内部联接的另一个语法变体。