[Résolu] Numérotation par ordre alphabétique

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
ClayStone
Membre lOOyal
Membre lOOyal
Messages : 36
Inscription : 13 mars 2017 07:20

[Résolu] Numérotation par ordre alphabétique

Message par ClayStone »

Bonjour à tous,
Je ne sais pas trop si ça se fait, j’ouvre ce fil pour donner une réponse à une question que j’ai posée ici. J’espère ne pas faire un doublon . Et si ça peut aider quelqu’un...

Pour rappel, j'ai des articles écrits par un ou plusieurs auteurs, et abordant un ou plusieurs thèmes.
Je souhaite obtenir la liste des auteurs et des thèmes pour chaque article.

Piaf donne la solution pour la concaténation des enregistrements d’une colonne ici (3ème solution), et dans mon cas . Je n’y reviens pas, je ferais moins bien que lui. Cf claystone.odb
claystone.odb
Pour obtenir la liste des auteurs classés par ordre alphabétique, je n’ai pas réussi à trouver une solution utilisant un ORDER BY bien placé.

J’ai contourné cette difficulté en ajoutant une étape avant les deux étapes décrites par Piaf :
créer une vue jumelle de la table de relation n to n REL_ATICLE_AUTEUR en ajoutant une colonne qui identifie les auteurs par leur place dans l’ordre alphabétique de la table AUTEUR (en remplacement de l’identification par la clé primaire de cette même table)

numérotation des auteurs par ordre alphabétique :

Code : Tout sélectionner

( SELECT COUNT( "AUTEUR"."auteur" ) FROM "AUTEUR" AS "TEST_ALPHA" WHERE "AUTEUR"."auteur" > "TEST_ALPHA"."auteur" ) + 1 
d’où la requête de la vue Vue_REL_ARTICLE_AUTEUR que j’ai ajoutée :

Code : Tout sélectionner

SELECT "REL_ARTICLE_AUTEUR"."ref_article", 
( SELECT COUNT( "AUTEUR"."auteur" ) FROM "AUTEUR" AS "TEST_ALPHA" WHERE "AUTEUR"."auteur" > "TEST_ALPHA"."auteur" ) + 1 AS "ref_auteur_alpha", 
"REL_ARTICLE_AUTEUR"."ref_auteur" 
FROM "REL_ARTICLE_AUTEUR", "ARTICLE", "AUTEUR" 
WHERE "REL_ARTICLE_AUTEUR"."ref_article" = "ARTICLE"."id_article" 
AND "REL_ARTICLE_AUTEUR"."ref_auteur" = "AUTEUR"."id_auteur" 
ORDER BY "REL_ARTICLE_AUTEUR"."ref_article" ASC, "REL_ARTICLE_AUTEUR"."ref_auteur" ASC
J’obtiens ClayStoneAlpha.odb
ClayStoneAlpha.odb
Merci d’avoir pris le temps de lire, et si quelqu’un a trouvé mieux, je suis preneur !
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.1.5.2 (Build ID 1:6.1.5-3+deb10u5) Obligation de version
Debian Buster - 4.19.0-8-amd64 - sous KDE5
--
L'ignorance est parfois une bonne explication, mais jamais une bonne excuse. Pardonnez-moi quand-même.