Disctinct sur plusieurs champs [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 16-11-2005 à 09:38:19
Le distinct n'est pas lié à un ou plusieurs champs.
Le distinct filtre le résultat d'une requête pour éliminer les lignes en double.
Marsh Posté le 16-11-2005 à 09:45:41
Pour vérifier que le duo n'existe qu'une seule fois, il existe plusieurs techniques, comme par exemple de lister les duos et avoir une sous requête pour lister des duos sur des lignes différentes, mais c'est long et cela nécessite d'avoir les numéros des enregistrements ce qui dépend de l'implémentation de la base.
Donc je ense plutôt à une solution avec un count(*) :
Code :
|
Marsh Posté le 16-11-2005 à 09:50:26
Et apres je teste le nb d'élément renvoyé par ma requete. Si le nombre est nul c'est que ma regle de gestion est vérifié. C'est bien ca???
Marsh Posté le 16-11-2005 à 10:03:25
Et pour faire qqch qui regarde si il existe au moins un enregistrement:
pour chaque duo ct_code et et_code de TMP_CHANTIER ayant le ct_type_local (TMP_CHANTIER) égale à 'M' ou 'V', le duo ct_code et et_code doit obligatoirement être référencé au moins une fois au sein de la table TMP_COMPOSITION_CHAINE
Marsh Posté le 16-11-2005 à 10:23:04
En fait, je n'ai peut-être pas bien compris la question. Excuse-moi.
J'ai cru que la base avait été remplie avec des données quelconques, et qu'il fallait y faire un peu de ménage, et notamment repérer les doublons pour les enlever. Dnas ce cas, je fais passer ma requête qui me donne les doublons, les triplons, etc.
Mais, s'il faut juste éviter d'insérer des doublons dans une base propre, alors, ma requête est inutile. Il faut simplement faire une lecture dans la base prélablement à une insertion pour voir si un duo existe déjà. S'il existe, on ne fait pas d'insertion. Donc, ce serait juste un Select ordinaire à faire avant une insertion éventuelle.
Marsh Posté le 17-11-2005 à 02:51:57
Pour moi un select distinct évite un doublon sur un champ et logiquement ça se comprend Sauf si tu as un index sur plusieurs champs où là on pourrait comprendre que ça évince les doublons mais y'en aurait pas vu que index multiple pour valeur unique
En gros on sait toujours pas dans quelle condition tu veux faire ça et que c'est probablement un soucis de modélisation de ton truc dans ta base
Après reste les triggers si c'est plus difficile qu'un simple index unique sur plusieurs champs
Marsh Posté le 16-11-2005 à 09:20:30
Est ce possible de faire un select disctinct sur 2 champs? Quelque chose du style :
Afin de respecter une regle de gestion de mon appli :
Moi je pensais comparer le nombre de résultats en le select normal et le select distinct. Mais il refuse de faire un select disctinct sur plusieurs champs.
Est ce que quelqu'un a une idée?