使用MysqlReader从多个表中获取数据

时间:2013-05-16 05:35:11

标签: c# mysql sql

这可能是一个简单的问题,但我对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,但到目前为止,这对我来说一直很好。

非常感谢。

1 个答案:

答案 0 :(得分: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();
  ...
}