2013-05-16 4 views
0

Cette question est probablement facile, mais je manque de compréhension de SQL, et ne peux pas sembler trouver ma réponse ailleurs. J'ai une solution existante qui fonctionne bien lorsque j'obtiens des données d'une seule table, mais lorsque je reçois deux tables, quand les deux contiennent le même nom de ligne, mon problème se produit. C'est ce que j'ai:Obtenir des données à partir de plusieurs tables avec MysqlReader

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

La taille et l'adresse je peux facilement chercher parce que les deux tables DonT partager ce nom de ligne. Mais la table Team et Location a une ligne appelée Name, mais je reçois uniquement le nom des tables d'équipe. Comment obtenir le nom des emplacements lors de l'extraction de données de cette façon? Je ne sais pas si c'est une mauvaise façon d'obtenir des données d'un serveur SQL, ou si je devrais utiliser JOIN à la place, mais jusqu'à présent cela a fonctionné très bien pour moi.

Merci beaucoup.

+0

« ou si je devrais utiliser à la place JOIN » - vous utilisez rejoindre déjà. C'est juste une autre variante de syntaxe de jointure interne. – Dennis

Répondre

1

Vous pouvez soleve cette Colonne Alias ​​... Donnez DIFFÉRENTES nom à votre colonne alias dans votre selecr ... comme ci-dessous

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

Merci beaucoup, a travaillé comme un charme! – Farsen

+0

@Farsen votre bienvenue –

Questions connexes