Supprimer les doublons d'une requête

Fermé
APILilou Messages postés 3 Date d'inscription vendredi 7 avril 2017 Statut Membre Dernière intervention 27 avril 2017 - 7 avril 2017 à 17:04
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 10 avril 2017 à 16:59
Bonjour,

Moi avoir besoin d'aide... Je travaille sur une Base de données que je n'ai pas développé et je ne connais strictement rien au langage SQL...

J'ai une petite requête qui me permet de récupérer des code fournisseur avec les noms correspondants par rapport a une date d'effet d'un traité (voir structure jointe)


Mais je souhaiterai que les fournisseur n'apparaisse qu'une fois...

Alors en farfoulliant, j'ai trouvé la fonction SELECT ... FROM ... GROUP BY ... ORDER BY .... que j'ai écrit comme ça :

Public Static Function J2S04_Code_surete()

SQL = "SELECT Sûreté.Nom_fournisseur_surete FROM Sûreté GROUP BY Sûreté.Nom_fournisseur_surete ORDER BY Sûreté.Nom_fournisseur_surete"

End Function

Mais euh après je bloque....

HELP ME PLEASE...

Merci beaucoup pour vos réponses...

Lydia.
A voir également:

4 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 7 avril 2017 à 21:24
bonsoir, tu ne nous as pas expliqué pourquoi ce que tu as essayé ne te convient pas. cela donné un message d'erreur, ou bien le résultat te semble-t-il incorrect?
peux-tu également partager le code SQL de ta petite requête?
0
Bonjour Yg_be,

Alors le souci c'est que plus aucun nom ne s'affiche...

et voilà ce qui s'affiche lorsque que je me met en mode SQL :
SELECT Sûreté.Code_fournisseur_surete AS [C0300-Code du fournisseur de la sûreté (le cas échéant)], J2S04_Code_surete() AS [C0320-Nom du fournisseur de la sûreté (le cas échéant)], Section_Cession.Date_effet_traite_section, Section_Cession.Date_fin_traite_section, SEntiteApiAs(Traite_Cession.Id_traite) AS Apicil_Assurance, SEntiteApiPrev(Traite_Cession.Id_traite) AS Apicil_Prévoyance, SEntiteMicils(Traite_Cession.Id_traite) AS Micils
FROM Programme INNER JOIN ((Courtier INNER JOIN Categorie_Courtier ON Courtier.Id_courtier = Categorie_Courtier.Id_courtier) INNER JOIN ((Section_Cession INNER JOIN (Traite_Cession INNER JOIN (Assureur INNER JOIN Sûreté ON Assureur.Id_assureur = Sûreté.Id_assureur) ON (Assureur.Id_assureur = Traite_Cession.Id_reassureur) AND (Traite_Cession.Id_traite = Sûreté.Id_traite)) ON (Traite_Cession.Id_traite = Section_Cession.Id_traite) AND (Section_Cession.Id_traite_section = Sûreté.Id_traite_section)) INNER JOIN Categorie_Assureur ON Assureur.Id_assureur = Categorie_Assureur.Id_assureur) ON Courtier.Id_courtier = Traite_Cession.Id_courtier) ON Programme.Id_programme = Traite_Cession.Id_programme;

Encore merci pour ton aide..
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 10 avril 2017 à 09:08
quand tu écris "je souhaiterai que les fournisseur n'apparaisse qu'une fois", que veux-tu dire précisément?
peux-tu donner un exemple?
as-tu essayé d'ajouter DISTINCT après le SELECT?
SELECT DISTINCT Sûreté.Code_fournisseur_surete AS ...
0
Un fournisseur peut avoir plusieurs contrats...
Je souhaite avoir la liste des fournisseurs actifs sur un année donnée...
Actuellement, la requête m'affiche tous les fournisseurs comme suit : si le fournisseur est utilisé avec 3 contrats, le fournisseur apparaîtra 3 fois dans la liste. Or, je veux qu'il ne s'affiche qu'une seule fois dans la liste...

Quand j'ajoute DISTINCT comme conseillé :

"SELECT DISTINCT Sûreté.Code_fournisseur_surete AS [C0300-Code du fournisseur de la sûreté (le cas échéant)], Sûreté.Nom_fournisseur_surete AS [C0320-Nom du fournisseur de la sûreté (le cas échéant)], Section_Cession.Date_effet_traite_section, Section_Cession.Date_fin_traite_section, SEntiteApiAs(Traite_Cession.Id_traite) AS Apicil_Assurance, SEntiteApiPrev(Traite_Cession.Id_traite) AS Apicil_Prévoyance, SEntiteMicils(Traite_Cession.Id_traite) AS Micils
FROM Programme INNER JOIN ((Courtier INNER JOIN Categorie_Courtier ON Courtier.Id_courtier = Categorie_Courtier.Id_courtier) INNER JOIN ((Section_Cession INNER JOIN (Traite_Cession INNER JOIN (Assureur INNER JOIN Sûreté ON Assureur.Id_assureur = Sûreté.Id_assureur) ON (Assureur.Id_assureur = Traite_Cession.Id_reassureur) AND (Traite_Cession.Id_traite = Sûreté.Id_traite)) ON (Traite_Cession.Id_traite = Section_Cession.Id_traite) AND (Section_Cession.Id_traite_section = Sûreté.Id_traite_section)) INNER JOIN Categorie_Assureur ON Assureur.Id_assureur = Categorie_Assureur.Id_assureur) ON Courtier.Id_courtier = Traite_Cession.Id_courtier) ON Programme.Id_programme = Traite_Cession.Id_programme;"

Cela me regroupe les fournisseurs et non supprime les doublons...
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > APILilou
10 avril 2017 à 16:56
tu as des doublons (des lignes identiques) en réponse à un
SELECT DISTINCT
?
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
10 avril 2017 à 16:59
et ainsi?
SELECT DISTINCT Sûreté.Code_fournisseur_surete AS [C0300-Code du fournisseur de la sûreté (le cas échéant)], Sûreté.Nom_fournisseur_surete AS [C0320-Nom du fournisseur de la sûreté (le cas échéant)]
FROM Programme INNER JOIN ((Courtier INNER JOIN Categorie_Courtier ON Courtier.Id_courtier = Categorie_Courtier.Id_courtier) INNER JOIN ((Section_Cession INNER JOIN (Traite_Cession INNER JOIN (Assureur INNER JOIN Sûreté ON Assureur.Id_assureur = Sûreté.Id_assureur) ON (Assureur.Id_assureur = Traite_Cession.Id_reassureur) AND (Traite_Cession.Id_traite = Sûreté.Id_traite)) ON (Traite_Cession.Id_traite = Section_Cession.Id_traite) AND (Section_Cession.Id_traite_section = Sûreté.Id_traite_section)) INNER JOIN Categorie_Assureur ON Assureur.Id_assureur = Categorie_Assureur.Id_assureur) ON Courtier.Id_courtier = Traite_Cession.Id_courtier) ON Programme.Id_programme = Traite_Cession.Id_programme;
0