这可能是一个简单的问题,但我对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,但到目前为止,这对我来说一直很好。
非常感谢。
答案 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();
...
}