|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Amine BenchekrounInscription : septembre 2011 Messages : 5 ![]() |
Bonjour,
J'ai une table qui comporte cinq champs, avec des enregistrements en double, je souhaiterai réaliser un select qui va extraire les données des cinq champs sans doublons. Merci |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 521 ![]() |
Code :
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Amine BenchekrounInscription : septembre 2011 Messages : 5 ![]() |
Négatif
SELECT Matricule, Prénom, Nom, Grade, Division, CIN FROM Table_IVP GROUP BY Matricule, Prénom, Nom, Grade, Division, CIN Ca m'affiche toujours des doublons, au fait je souhaiterai avoir les champs nom et prénom en distinct |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 521 ![]() |
Désolé mais pour moi ça fait SIX champs et vu votre demande succinct, comment j'aurais pu deviné les noms de colonnes ???
Citation:
En premier, c'était les lignes distincts sur tous les 5 champs et maintenant, c'est sur 2 champs des 6... Jusqu'à présent la télépathie ne marche pas très bien. D'ailleurs, si vous aviez observé les règles du foru ( http://club.developpez.com/regles/ ) vous auriez du nous fournir un jeu d'exemples et de résultat attendu ainsi que la structure de la table et ça éviterait ce jeu de ping pong / devinettes. Essayez ceci mais je ne vous empêche pas d'essayer de comprendre un peu et d'adapter ou d'essayer des choses... Code :
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Amine BenchekrounInscription : septembre 2011 Messages : 5 ![]() |
Négatif encore
Désolé, je reformule ma question : J'ai une table qui comporte six champs : Matricule Prénom Nom Grade Division CIN 1 Prénom1 Nom1 Grade1 Division1 CIN1 2 Prénom2 Nom2 Grade2 Division2 CIN2 3 Prénom3 Nom3 Grade3 Division3 CIN3 1 Prénom1 Nom1 Grade1 Division1 CIN1 1 Prénom1 Nom1 Grade1 Division1 CIN1 1 Prénom1 Nom1 Grade1 Division1 CIN1 2 Prénom2 Nom2 Grade2 Division2 CIN2 Je souhaiterai extraire les six champs avec des enregistrements non double de sorte à avoir le résultat ci-dessous : Matricule Prénom Nom Grade Division CIN 1 Prénom1 Nom1 Grade1 Division1 CIN1 2 Prénom2 Nom2 Grade2 Division2 CIN2 3 Prénom3 Nom3 Grade3 Division3 CIN3 Votre première proposition du group by m'a donné un resultat avec doublons. Votre deuxième proposition ne m'arrangera pas puisque j'ai besoin des six champs. Vous dites : Essayez ceci mais je ne vous empêche pas d'essayer de comprendre un peu et d'adapter ou d'essayer des choses... Belle expression Ok, Merci |
|
|
00
|
|
|
#6 | |||
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 521 ![]() |
ça doit ça :
Code :
Citation:
Et c'est toujours bien de comprendre ce que l'on fait, non ?
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|||
|
|
00
|
|
|
#7 | |||||||||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Citation:
Code :
Donc au final : Code :
Code :
|
|||||||||
|
|
00
|
|
|
#8 | ||||
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 521 ![]() |
Excusez-moi, StringBuilder, je suis sûrement bien ignorant mais outre la différence de syntaxe entre
Code :
Code :
D'autant plus que les temps et les plans d’exécution sont identiques... Pour moi, c'est une façon plus propre et plus explicite qu'un distinct. En outre, je peux aussi fournir bien des exemples de SQL tarabiscotés mais il me semble que ma requête répond correctement à la demande, je ne comprends pas vraiment votre point.
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
||||
|
|
00
|
|
|
#9 | ||||||||
|
Membre du Club
![]() Inscription : décembre 2002 Messages : 82 ![]() |
Bonjour,
Si c'est un problème de qualité de données non detecté/bloqué par des contraintes d'intégrités, vous pouvez nettoyer vos data simplement ! Code :
Maintenant, moi j'ai fais un truc tout con : Code :
Code :
Code :
Voila |
||||||||
|
|
10
|
|
|
#10 | ||||||||
|
Invité de passage
![]() Amine BenchekrounInscription : septembre 2011 Messages : 5 ![]() |
Bonjour,
Problème toujours pas résolu Les trois réponses affichent ceci : 7gyY9w1ZY6ySRgPeaefZ : Code :
Code :
Code :
Code :
Matricule , Prénom , Nom , Grade , Division , CIN Code :
Je souhaiterai avoir la liste des six champs avec un distinct sur les champs nom et le prénom seulement. Si vous me dites, lequel des enregistrements en double je veux au final, je dirai ; n'importe lequel ... Mes remerciements |
||||||||
|
|
00
|
|
|
#11 | |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 521 ![]() |
Citation:
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() Inscription : décembre 2002 Messages : 82 ![]() |
Oui, si la valeur Grade est différente ... les lignes ne sont pas en doublons
Bon pour ma part, je pense que le grade le plus élevé est celui en rigueur faute de date ! Voici ce que ça donne : Code :
P.S.: Avec les 2 3 exemples de requêtes SQL que j'ai pu vous donner sur ce topic, vous allez pouvoir répondre a 90% des besoins en matières de sélection. Donc essayez de bien comprendre la logique et tout deviendra plus simple pour vous ![]()
|
||
|
|
20
|
|
|
#13 | ||
|
Invité de passage
![]() Amine BenchekrounInscription : septembre 2011 Messages : 5 ![]() |
Problème résolu
![]() Glouferu, votre solution est bien correct, juste un petit détail ; vu qu'un max grade d'une personne risque d'être en double aussi, le max ne fonctionnera pas, j'ai pensé alors a créer un id unique pour tout les enregistrement que j'ai, et je récupère le max ou le min id d'une personne puisque c'est un enregistrement au hasard qui m'intéresse. Code :
Salutations |
||
|
|
00
|
|
|
#14 | ||||||
|
Membre Expert
![]() Sylvain DevidalChef de projets Générix Inscription : février 2010 Messages : 1 062 ![]() |
Citation:
Alors que group by effectue un regroupement des lignes en vue d'une utilisation conjointe avec une fonction de regroupement (min, max, etc.) Le fait que GROUP BY faisse un distinct est un effet de bord uniquement, et il ne doit jamais être utilisé pour ça. C'est comme les gens qui croient que le GROUP BY et le ORDER BY sont synonymes : le ORDER BY est un effet de bord du GROUP BY et du DISTINCT. Cependant, ce n'est pas systématique (lors d'une jointure noramment, l'ordre n'est pas toujours assuré) ! Il s'agit donc d'une différence de sémantique. Citation:
Le fait que le plan d'exécution et le résultat soit identique n'est qu'un "coup de chance" parceque pour un SGBD donné, dans une situation donnée, il va faire la même chose. Cela n'est en rien assuré. |
||||||
|
|
00
|
|
|
#15 | |||
|
Membre du Club
![]() Inscription : décembre 2002 Messages : 82 ![]() |
Citation:
|
|||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com