babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
16 oct. 2014 à 19:06
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 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
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
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.
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 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)
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 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...
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 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)