0

これはおそらく簡単な質問ですが、SQL の理解が不足しており、他の場所で答えを見つけることができないようです。1 つのテーブルからデータを取得するときに問題なく動作する既存のソリューションがありますが、2 つのテーブルから取得するときに、両方に同じ行名が含まれていると、問題が発生します。これは私が持っているものです:

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

2 つのテーブルがその行名を共有していないため、サイズとアドレスを簡単に取得できます。ただし、Team テーブルと Location テーブルの両方に Name という行がありますが、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 に答える