Requete SQL suppression de doublon dans un concat

Fermé
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014 - 4 févr. 2013 à 17:07
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014 - 8 févr. 2013 à 09:45
Bonjour,
Je m'excuse d'avance si se sujet a deja etait repondu :-° , Apres plusieur recherche sur internet je n'est toujours pas trouver mon probleme sur ma requete SQL .

SELECT DISTINCT pj_libelle & dp_libelle_projet AS PROJET_LIB
FROM FICHE_PROJET, DEMANDE_PROD, PROJET
WHERE fp_id=dp_fp_id And fp_pj_id=pj_id And dp_libelle_objet In ('MEP greenwich','Nouvelle infra Agile Delivery') And dp_date_creation>#1/3/2012#

Le resultat de cette requette :
ACCUEIL PLUS G2R2C0ACCUEIL PLUS G2R2C0
ACCUEIL PLUS G3R0ACCUEIL PLUS G3R0
ARSENE G1R0ARSENE G1R0
BEAM G3R0BEAM G3R0
BLOGVISION G1R0BLOGVISION G1R0
BOA G01R00BOA G01R00
BRIQUE DE CONFIRMATION G01R00C00BRIQUE DE CONFIRMATION G01R00C00
CANAL PLUS INFINITY G1R0C0CANAL PLUS INFINITY G1R0C0
CARE FIXE ORANGE G12R5CARE FIXE ORANGE G12R5
CARTO QS G1R0C00CARTO QS G1R0C00

Le "&" permet de faire une concat en sql sous Access qui permet de fusionner la colonne 1 et 2 .

Ici pj_libelle appartien a la table PROJET via la clé id FP_PJ_ID et PJ_LIBELLE_PROJET appartien a la table DEMANDE_PROD . Pour passer de de la table 1 à 2 je passe d'abord par la table Fiche_PROJET qui a pour clé_id FP_ID donc cela fait DEMANDE-PROD (dp_fp_id) -> FICHE_PROJET et de la FICHE_PROJET -> PROJET (pj_id).

:-° Et donc en faisant cela j'obtient des doublons pour ces colonnes de pj_libelle . Mon objectif et de supprimer les doublons :D .

8 réponses

Bonsoir,
Merci de la confiance que tu nous fais en nous posant ta question, mais je crois que tu nous surestimes quelque peu. As-tu au moins pris la peine de la relire et de te demander ce que tes lecteurs pourraient y comprendre?
1
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014
5 févr. 2013 à 10:18
Bon oui pardon bon je vais reformuler pour etre plus claire . Dison que pour supprimer des doublons sur access en SQL il faut faire un SELECT DISTINCT ça je sais mais cela ne marche que pour une table mais apres quant ton veu aller chercher les colones dans different tableau la technique ne marche plus et je me retrouve coincer. Je cherche une combine qui marche sur une multi table ^^.
0
Bonjour,
Pour reprendre : si tu veux qu'on comprenne ce que tu voudrais faire, merci de t'expliquer exactement sous forme de : "j'ai une table, 2 tables, 3 tables, reliées comme cela et comme cela, je voudrais sélectionner sans doublon ceci et cela, je connais ça et ça, mais le résultat ne me convient pas pour telle et telle raison".
Bien cordialement.
0
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014
5 févr. 2013 à 14:19
Bon,

J'ai en tout 3 tables , j'ai selectionner 2 colonne dans 2 tables different . Mais c'est tables ne sont selectionnable que par le bié d'une 3 eme tables par rapport au identifiant des clés . Par exemple : table projet1 , je selectionne la colonne A, ensuite j'ai table projet2 ou je selectionne la colonne B .

Pour pouvoir selectionner les 2 colonnes il faut que je passe par la 3 eme table appeler fiche_projet ou il sont referencier par rapport au association de clé id

(projet1.projet1_id=fiche_projet.projet1_id-----AND----fiche_projet.projet2_id=projet2.projet2_id)

Ensuite dans la table 3 fiches_projet je lui demande par raport a une colone x des valeurs a selecionner qui sont egale a differrentes valeurs associer au clé des tables projet1 et projet2 .
Et donc par rapport a ce filtre je retrouve bien normalement les meme valeurs dans les colonne A et B donc doublons sa c'est normal par contre je m'apercois desfois que dans la colonne B des valeurs changes donc plus egale a colonne A .

Donc mon besoin et d'abord de supprimer tous les doublons quant je fusionne les 2 colonnes :
Exemple de resulta de fusion de colone A+B
cela me donne
Colonne A ColonneB
Thomas Thomas

Resultat
Colonne A+B
ThomasThomas

et j'aimerais juste avoir que Thomas

Si le resultat et different alors je garde les 2 .
0

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

Posez votre question
blux Messages postés 26533 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 décembre 2024 3 317
Modifié par blux le 5/02/2013 à 14:57
Salut,

il faut utiliser la fonction iif(test;valeur_si_vrai;valeur_si_faux) de manière judicieuse.

Ca peut donner un truc comme ça :

SELECT ....iif(ColonneA=ColonneB;ColonneA;ColonneA & ColonneB)... FROM....


A+ blux
 "Les cons, ça ose tout. 
C'est même à ça qu'on les reconnait"
0
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014
5 févr. 2013 à 15:45
Ok je vais tester sa merci blux.

Ps: Je remerci egalement tessel75 pour m'avoir aider a mieux formuler mon besoin :)
0
Bonsoir à tous les deux,
Merci de nous dire si la solution proposée par Blux a répondu à ta question.
.
2) le fait que tu aies besoin d'une table intermédiaire pour établir la liaison entre Table1 et Table2 n'est absolument pas gênant, c'est très fréquent et on a vu bien pire dans le genre.
.
3) si le résultat n'est pas encore celui que tu veux, tu peux encore nous envoyer ta base (ou un extrait) anonymisée via cjoint.com, avec les indications nécessaires pour qu'on puisse y regarder de plus près.

Cordialement
0
melongourmand Messages postés 24 Date d'inscription lundi 4 février 2013 Statut Membre Dernière intervention 28 avril 2014
Modifié par melongourmand le 8/02/2013 à 09:45
Bonjour,

Je dirais un mot.....................MERCI BLUX..............................

Donc je vien de tester la technique de blux sur la fonction du iif et cela marche super bien voici le code correct pour les futurs requetteur sql qui bloquerer sur ce genre de chose ^^ :

SELECT DISTINCT (pj_libelle) , (dp_libelle_projet),iif(dp_libelle_projet=pj_libelle,dp_libelle_projet,dp_libelle_projet & pj_libelle) AS PROJET_LIB
FROM FICHE_PROJET, DEMANDE_PROD, JALONS, PROJET, APPLICATION
WHERE fp_id=dp_fp_id And dp_jal_id=jal_id And fp_pj_id=pj_id And app_id=pj_app_id AND dp_libelle_objet In ('MEP greenwich','Nouvelle infra Agile Delivery') And dp_date_creation>#01/03/2012#


PS: Pour corriger blux en Access les condition s'ecrive avec des virgule iif(test,valeur_si_vrai,valeur_si_faux) et pas avec des " ; " . Voila mais bon merci pour tout ^^ .
0