SQL: Résultats regroupés en évitant les doublons
coeurdange57
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pourriez-vous m'aider concernant l'élaboration d'une requête SQL sur une base de données ?
Le contexte est le suivant: mon système gère des contrats liés à des activités (1 contrat peut être lié à 1 ou plusieurs activités). Chaque activité est lié à un "domaine"
Voici la structure des tables de ma base de données:


J'ai créé cette vue: VUE_CONTRAT_ACTIVITE_DOMAINE en effectuant la requête:

J'ai effectué cette requête afin d'obtenir tous les domaines obtenus par contrat:

Cependant je souhaiterais pour la dernière ligne que le système affiche 2;8 et non pas 2;8;8 c'est-à-dire qu'il n'affiche qu'une fois le domaine même si celui-ci est le même pour plusieurs activités.
Pourriez-vous me dire comment faire?
Merci d'avance pour votre aide.
Cordialement
Pourriez-vous m'aider concernant l'élaboration d'une requête SQL sur une base de données ?
Le contexte est le suivant: mon système gère des contrats liés à des activités (1 contrat peut être lié à 1 ou plusieurs activités). Chaque activité est lié à un "domaine"
Voici la structure des tables de ma base de données:


J'ai créé cette vue: VUE_CONTRAT_ACTIVITE_DOMAINE en effectuant la requête:
SELECT c.Id_CONTRAT, a.Id_ACTIVITE, a.Id_DOMAINE FROM LIEN_CONTRAT_ACTIVITE c, activite a WHERE c.Id_CONTRAT = a.Id_CONTRAT

J'ai effectué cette requête afin d'obtenir tous les domaines obtenus par contrat:
SELECT Id_CONTRAT, SUBSTR(SYS_CONNECT_BY_PATH(Id_DOMAINE,';'),2) Id_DOMAINE FROM (SELECT Id_DOMAINE, Id_CONTRAT, COUNT(*) OVER ( partition BY Id_CONTRAT ) im, ROW_NUMBER () OVER ( partition BY Id_CONTRAT order by Id_DOMAINE) seq FROM VUE_CONTRAT_ACTIVITE_DOMAINE WHERE Id_CONTRAT IS NOT NULL ) WHERE seq =im START WITH seq =1 CONNECT BY prior seq+1=seq AND prior Id_CONTRAT =Id_CONTRAT

Cependant je souhaiterais pour la dernière ligne que le système affiche 2;8 et non pas 2;8;8 c'est-à-dire qu'il n'affiche qu'une fois le domaine même si celui-ci est le même pour plusieurs activités.
Pourriez-vous me dire comment faire?
Merci d'avance pour votre aide.
Cordialement
A voir également:
- SQL: Résultats regroupés en évitant les doublons
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, ne pourrais-tu pas simplement utiliser une vue VUE_CONTRAT_DOMAINE au lieu de la vue VUE_CONTRAT_ACTIVITE_DOMAINE comme base de ta requête?
suggestion pour VUE_CONTRAT_DOMAINE:
suggestion pour VUE_CONTRAT_DOMAINE:
SELECT distinct c.Id_CONTRAT, a.Id_DOMAINE FROM LIEN_CONTRAT_ACTIVITE c, activite a WHERE c.Id_CONTRAT = a.Id_CONTRAT