Datarow et jointure

babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 16 oct. 2014 à 19:06
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 20 oct. 2014 à 11:52
Bonjour,
j'ai une requête sur deux tables. Il y a bien évidemment des noms de colonne identiques entre ces 2 tables (ex : dateCreation, Idcreateur...).
J'ai vue que dans le datarow, le nom des colonnes avaient un "1" en fin de nom lorsque la colonne apparaissait une seconde fois.

Ex : liste des colonnes du dataRow
colonne 0 :[pk_Client]
colonne 1 :[dateCreation]
colonne 2 :[idCreateur]
colonne 3 :[chXXX]
colonne 4 :[pk_commande]
colonne 5 :[dateCreation1]
colonne 6 :[idCreateur1]
colonne 7 : [chyyy]

Question : je suppose qu'il met un "1" pour tous les champs de la deuxième table de la jointure (qui sont présents dans la 1ère table). Ce comportement est-il fiable (c'est à dire toujours un "1" et toujours sur la seconde table) ?
Peut-on forcer une autre valeur que 1 par exemple un préfixe ou un suffixe comme "TBL_A" ?
Merci
DT

6 réponses

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
Modifié par BasicInstinct le 20/10/2014 à 10:56
Qui dit jointure, dis en général doublons dans le jeu de résultats. niveau perf, c'est moyen. Si c'est le cas, étudie le récupération en 2 requêtes ça donne en général de bons résultats (si bien filtrées...), et ça te permet de gérer correctement 2 objets.

oublie pas de valider la réponse, pour les futures recherches :P

BasicInstinct
1
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
Modifié par BasicInstinct le 17/10/2014 à 15:19
Bonjour,

Dans ta requête, tu peux renommer les champs :

select champ as MonNomQuiVaBien, ....

le 'as' étant facultatif, mais de mon point de vue, préférable pour facilité la relecture.

tu obtiendras comme ça des noms de colonnes unique.


les champs [dateCreation] et [idCreateur] ont ils un sens pour l'applicatif ? Si ce n'est pas le cas, il n'est peut être pas nécessaire de les mettre dans la requête.

selon les besoins, il peut être préférable de gérer un dataset avec 2 tables et des datarelations. La jointure se faisant dans ce cas, coté applicatif.


BasicInstinct
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
20 oct. 2014 à 09:19
Comme la table contient pas mal de colonne j'aurai aimé ne pas redéfinir les colonnes et donc nommer les colonnes explicitement dans la requête.
Donc s'il y avait un mécanisme qui permettrait de la faire à ma place (qq chose du style : préfix auto de toutes les colonnes avec "TBL1_" par exemple)
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
Modifié par BasicInstinct le 20/10/2014 à 10:56
Non !

pour la bonne est simple raison que ton datable que tu parcours, est par définition 1 seule table, avec des colonnes nommées toto, toto_1 ...
Il n'a aucune notion de la provenance des données.

tu peux considérer que tous les en nom avec _1 provienne de la 2eme table, mais tu es soumis à un risque de modification de requête.

si je comprends bien ton besoin, tu as 2 objets en base de données que tu fais transiter par 1 objet dans ton appli, pour le découpé en 2 objets ? c'est pas logique.




BasicInstinct
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
20 oct. 2014 à 10:25
C'est vrai que présenté comme cela ça ne parait pas très logique...
Mais bon comme tu dois le savoir l'informatique est un ensemble de compromis. Dans mon cas, je dois faire avec de l'existant, des contraintes techniques (Framework 2 entre autres) et des contraintes d'optimisation...

Merci pour ton aide
0
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015
20 oct. 2014 à 11:52
En fait je travaille sur un très gros MCD. Comme certaines tables sont constituées de nombreuses colonnes, certaines d'entre elles ont été "explosées". Dans le cas présent, j'ai une relation "1,1 -- 1,1" entre les 2 tables qui m'intéressent. Cette optimisation du MCD permet de réduire le nombre de colonnes dans les tables, la taille des objets c#, ça décompose les données de manière "logique" pour une entité et ça permet de ne charger que les données nécessaires par rapport à l'appli métier utilisée... Que du bonheur !
Comme je ne peux pas toucher à la DLL qui contient "les méthodes d'accès aux données", Voici la solution que j'ai mis en place : j'ai récupéré ma fameuse DataTable (avec le inner join) puis j'ai fait une copy dans une seconde datable pour enfin supprimer et renommer les colonnes de ces 2 datables pour retrouver des datables qui correspondent à mes tables en base.
Dit comme cela ça fait encore moins logique que tout à l'heure ;o)

En tout cas merci pour tes réponses

Slts
0
Rejoignez-nous