2011-07-25 1 views
0

Je parcours toutes les colonnes des colonnes de la table d'une rangée (c'était une manière compliquée de le dire - fondamentalement j'ai une rangée "R", où j'utilise R.Table.Columns pour itérer à travers eux).Connecteur MySQL .NET - Récupère la table à laquelle appartient cette colonne?

Pour chaque colonne, je voudrais savoir à quelle table il appartient. Toutefois, avec la requête suivante, seulement 1 table apparaît dans le jeu de résultats. Comment venir? J'ai besoin de faire la distinction entre les différentes tables, même si les noms des colonnes sont les mêmes.

SELECT * FROM User LEFT OUTER JOIN Provider ON User.ProviderID=Provider.ID WHERE User.IsDeleted=false 

Répondre

1

Utilisez alias:

SELECT 
table1.column1 AS foo, 
table2.column1 AS bar, 
... 

Utilisation SELECT * est une mauvaise pratique de toute façon: SELECT * is evil

+0

Ce n'est pas mal dans mon cas. Je dois l'utiliser à des fins ORM. –

+0

ORM est encore pire EVIL;) – piotrpo

+0

Même avec votre suggestion, TableName de la colonne renvoie "Table". En d'autres termes, cela ne fonctionne pas du tout. –

0

Vous devriez sérieusement envisager d'utiliser les show tables et show columns commandes pour la découverte de la base de données

Vous pouvez ensuite générer des requêtes à partir de cela et éviter d'utiliser select *

Pour répondre plus directement à votre question, je ne pense pas qu'il soit possible d'obtenir le nom d'une colonne dans un jeu de résultats, car ces colonnes doivent provenir d'une table. Considérez cette requête complètement valide par exemple:

select 'foo' as bar, 1+1 as result; 
Questions connexes