[Résolu] Requête avec Critères de sélection & Regroupements.

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.
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

[Résolu] Requête avec Critères de sélection & Regroupements.

Message par Calife »

Bonjour à tous !
Dans une table de coordonnées de personnes (FIREBIRD), j'ai une trentaine de champs

Particulièrement ceux qui m'intéressent, pour réaliser une requête :

Le code Insee de la commune, le nom de la commune, le libellé de la voie, le N° de la Voie, Le nom du contact, le prénom du contact, l'âge du contact.

Le but est de n'envoyer qu'un courrier postal par adresse, en ciblant le nom de famille, et en choisissant la personne la plus âgée du foyer.

J'ai tenté de faire des fonctions de regroupements, une fonction "minimum" sur le champ date de naissance...
Ma requête fonctionne, mais n'est pas correcte.

Dans le résultat de ma requête, j'aimerais avoir tous les champs, et je ne sais pas quelle fonction utiliser sur ces champs.

Je vous remercie infiniment de me donner une piste, je tenterai de suivre vos conseils.

Nota : Je ne peux pas vous fournir la base pour des raisons de confidentialité.
Dernière modification par Calife le 16 sept. 2025 10:40, modifié 2 fois.
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9899
Inscription : 28 août 2010 08:45

Re: Requête avec Critères de sélection & Regroupements.

Message par micmac »

Bonjour,
Calife a écrit : 12 sept. 2025 16:39 Nota : Je ne peux pas vous fournir la base pour des raisons de confidentialité.
Si c'est parce qu'il s'agit de données confidentielles, vous pouvez fabriquer un fichier-test rendu anonyme afin de ne pas divulguer d'informations sensibles.
Ceci dans le but de faciliter le travail des bénévoles qui pourront ainsi, en évitant de jouer aux devinettes, vous proposer les réponses les mieux adaptées.
Comment dépersonnaliser un document

Cordialement,
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

Bonjour MicMac, bonjour à tous

Effectivement, je vais tâcher de fournir une base avec des enregistrements adéquats, vous permettant de m'aider.

Merci infiniment !
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

Voilà, ci-jointe une ébauche de base pour vous permettre de m'aider.
La requête n'est là que pour vous faciliter la tâche (J'espère), pour m'indiquer la manière de m'y prendre, merci !

Je sais que ce n'est pas une bonne pratique sur le forum, mais j'ai deux autres questions, l'une qui est liée à l'envoi de mon fichier joint, l'autre qui est d'un ordre différent du sujet :

1ère Question - je suis parti de ma base réelle pour faire l'exemple, j'ai supprimé des enregistrements (environ 300'000 !)
j'en ai gardé un peu moins de 70
Quand j'ai sauvegardé la nouvelle, enregistrements modifiés, elle faisait plus de 44 Mo !
Je ne pouvais donc pas la joindre.
J'ai créé une nouvelle base, et copié/collé la table et la requête de l'une vers l'autre,
et la nouvelle ne faisait que 8 Ko. j'ai lu quelque part qu'on ne peut pas compresser une base Firebird..
Je me trompe, ou il y a une astuce ?

2ème Question - Dans ma requête, les dates s'affichent sous le format jj/mm/aa & j'aimerais jj/mm/aaaa (Comme dans la table)
Sous HSQLBD il me semble que quand les champs Date sont sous ce format dans la table, dans la requêtes aussi...
(Je sais qu'avec un clic droit sur la colonne date de la requête, je peux visualiser le bon format, mais si je pouvais m'en passer...)

Pour Info, je suis passé sous Firebird, car sous HSQLBD, la gestion de la base était infernale, d'une lenteur insupportable (Tout en mémoire ?) alors que sous Firebird, tout passe crème et rapidement.
Bon, la base complète comporte environ 380'000 enregistrements.

Je vous prie de m'excuser d'avoir mélangé "un peu" plusieurs sujets !
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 721
Inscription : 20 déc. 2017 14:45

Re: Requête avec Critères de sélection & Regroupements.

Message par rollmops »

Bonjour,
Calife a écrit : 12 sept. 2025 16:39 Dans une table de coordonnées de personnes (FIREBIRD)
Firebird est-il toujours déclaré comme fonction expérimentale dans Libre Office ?
Calife a écrit : 12 sept. 2025 16:39 j'ai une trentaine de champs

Particulièrement ceux qui m'intéressent, pour réaliser une requête :

Le code Insee de la commune, le nom de la commune, le libellé de la voie, le N° de la Voie, Le nom du contact, le prénom du contact, l'âge du contact.
30 champs, c'est énorme. Je pense qu'il y a un problème de structure dans votre table.
Sans doute, ce qui fait que vous n'arrivez pas à vos fins avec une requête.
OpenOffice 4.1.15 - Windows 10
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

Oui, 30 champs, c'est énorme...

Table issue d'un fichier CSV que l'on m'a fourni, donc aucune structure logique, et travail dans l'urgence...

Il faut absolument que je me débrouille avec ça, pas le temps de créer des tables comme par exemple celles des communes et de reprendre la table Contacts...

Le but étant de faire du publipostage suivant différents critères.

Je dois rendre ma copie début de semaine prochaine et nous sommes Samedi... Insurmontable de revoir le tout.
D'autant plus que ma requête est très simplifiée, j'aurai d'autres critères, mais ceux que j'ai énoncés sont essentiels

Si je n'avais qu'une petite dizaine de champs, dont la date, le problème resterait entier.

Pour Firebird, oui, toujours expérimental...
Mais comme je l'ai dit, avec HSQLDB , ingérable ce volume de données.
Je n'ai pas l'explication, mais avec Firebird, ça fonce...

A noter :
J'avais essayé sous HSQLDB, de créer des tables connectées à des fichiers externes CSV, et ça marchait du feu de dieu...
Mais impossible de relier ces tables, ou je n'ai pas su...
je ne suis qu'un amateur, je rends des services à mon associations à mon niveau...
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 721
Inscription : 20 déc. 2017 14:45

Re: Requête avec Critères de sélection & Regroupements.

Message par rollmops »

Calife a écrit : 12 sept. 2025 16:39en ciblant le nom de famille, et en choisissant la personne la plus âgée du foyer.

J'ai tenté de faire des fonctions de regroupements, une fonction "minimum" sur le champ date de naissance...
Ma requête fonctionne, mais n'est pas correcte.

Dans le résultat de ma requête, j'aimerais avoir tous les champs, et je ne sais pas quelle fonction utiliser sur ces champs.
Exemple
2025-09-13 13_46_29-contact.odb _ Requête1 - OpenOffice Base_ Query Design.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.15 - Windows 10
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

@rollmops :

Bonsoir,

Il y a un petit problème dans SQL, pas de faute de syntaxe, mais la sélection n'est pas bonne.
Rappel au cas où, la base est sous Firebird, pas HSQLDB
Peut-être (probablement) que je ne me suis pas bien expliqué dans ce que je désire obtenir...
Je considère qu'au même N° de la même voie, deux ou plusieurs foyers peuvent résider dans des appartements différents.
Je considère qu'avec un même patronyme, au même N° de la Même voie, les personnes font partie du même foyer.
Tant pis pour moi si ce n'est pas le cas, qui doit être très rare.

Pour mieux s'en rendre compte, clic gauche sur la colonne "Libellé de voie", et trier par ordre croissant, et ceci dans la table comme dans la requête.

En comparant les deux, on peut constater par exemple que pour la voie "CHEMIN DU MILIEU", il n'y a qu'un enregistrement dans la requête, alors qu'il y en a deux dans la table, le Numéro de voie est différent, les personnes n'habitent pas au même N°

Pour la voie "IMPASSE IMPAIRE", seule la personne la plus âgée a été prise en compte.
J'ai fait exprès aussi de mettre deux personnes qui ont la même date de naissance dans cette rue, pour voir ce qu'il se passe...

Merci pour votre aide, vraiment sympa !!
J'essaie de comprendre de mon côté... Mais je ne me fais pas trop d'illusions...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17191
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Requête avec Critères de sélection & Regroupements.

Message par jeanmimi »

Bonjour,
Pour Chemin du milieu, j'affiche les deux enregistrements, par contre pour Chemin de l'âne, j'en ai plusieurs par numéros de voie, dans ce premier test.
Req_Firebird.png
Il vaudrait mieux, pour le traitement des données par SQL, que les noms des champs ne comportent ni espaces, ni lettres accentuées.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par jeanmimi le 13 sept. 2025 19:22, modifié 1 fois.
LibreOffice : Version : 25.8.0.4 (x64)(1 septembre 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

@ Jeanmimi

Ah ouiiii ! On y est presque !!!

Effectivement, "CHEMIN DE L'ÂNE", il ne devrait y avoir qu'une ligne pour "LEFEBVRE", car même nom et strictement même adresse.

Vous êtes formidables !!!

Mille mercis à vous tous, je suis sûr que vous allez me trouver la solution !

Bravissimo !!!
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17191
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Requête avec Critères de sélection & Regroupements.

Message par jeanmimi »

Les fonctions SQL de Firebird sont listées ici :
https://www.firebirdsql.org/en/sql-conformance/

Voici la requête avec les Groupements :
Contacts_Firebird_01.odb
rollmops avait proposé une requête entre la Table et la première Requête avec la fonction IN ou INNER en SQL Firebird. C'est une piste à voir.

Pour n'avoir qu'un seul âge MAX par adresse, donc un seul enregistrement pour le 11 Chemin de l'Ane, voici la requête :
Req_Un_Seul_Age_Par_Numero.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.0.4 (x64)(1 septembre 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

Bonjour à tous !

Merci jeanmimi !

Je me suis inspiré de ta méthode, il faut que je tienne compte également du patronyme du contact.
(Un seul contact retenu par foyer, même Nom de Contact à la même adresse)

J'ai fait une requête qui a l'air de fonctionner, certainement pas la plus élégante qui soit... :oops: :oops:
Il doit bien y avoir mieux !

Pour faciliter la comparaison, j'ai fait deux requêtes dont les tris et agencement des champs sont identiques.

1 requête avec tous les contacts
1 requête avec les critères recherchés.

Merci encore pour votre aide !
Contacts_Firebird_04.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Calife le 14 sept. 2025 13:31, modifié 1 fois.
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12709
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: Requête avec Critères de sélection & Regroupements.

Message par Bidouille »

Comment clore un sujet

Vous devriez fournir vos requêtes directement dans le message afin que le moteur de recherche du forum puisse les indexer.
Cela facilitera les recherches ultérieures.
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

@ Bidouille :

Je crois que j'ai mal compris...
J'ai mis la base et pas la requête dans mon dernier message.

De quelle manière mettre une requête dans le texte, comme ci-dessous ?

Code : Tout sélectionner

SELECT "code du l'ugle" "Code_Ugle", "Libellé de voie" "Lib_Voie", "numéro de voie" "Num_Voie", "Nom Choisi" "Nom_Choisi",
MIN( "date_de_naissance" ) "Date_Naissance",
MIN( "ID" ) "Id_Contact",
MIN( "code du département" ) "Code_Departement",
MIN( "libellé de l'ugle" ) "Lib_Ugle",
MIN( "prénoms" ) "Prenom",
MIN( "sexe" ) "Sexe",
MIN( "Titre" ) "Titre",
MIN( "code commune de naissance" ) "Code_Comm_Naissance",
MIN( "libellé commune de naissance" ) "Lib_Comm_Naissance",
MIN( "code département naissance" ) "Code_Depart_Naissance",
MIN( "pays de naissance" ) "Pays_Naissance",
MIN( "libellé nationalité" ) "Lib_Nationalite",
MIN( "complément 1" ) "Complement_Adress_1",
MIN( "complément 2" ) "Complement_Adress_2",
MIN( "lieu-dit" ) "Lieu_Dit",
MIN( "code postal" ) "CodePost",
MIN( "commune" ) "Commune",
MIN( "pays" ) "Pays"
FROM "Contacts" 
GROUP BY "Contacts"."code du l'ugle", "Contacts"."Libellé de voie", "Contacts"."numéro de voie", "Contacts"."Nom Choisi" 
ORDER BY "Lib_Voie" ASC, "Num_Voie" ASC, "Nom_Choisi" ASC, "Date_Naissance" ASC
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17191
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Requête avec Critères de sélection & Regroupements.

Message par jeanmimi »

En utilisant ta Table des Contacts et la requête que j'avais jointe précédemment, j'ai créé comme toi une nouvelle requête ; si tu veux bien la tester :

Code : Tout sélectionner

SELECT "Contacts".* FROM "Req_AGE_MAX_PAR_ADRESSE", "Contacts" 
WHERE 
"Req_AGE_MAX_PAR_ADRESSE"."AGE_MAX" = "Contacts"."date_de_naissance" 
AND 
"Req_AGE_MAX_PAR_ADRESSE"."numéro de voie" = "Contacts"."numéro de voie" 
AND 
"Req_AGE_MAX_PAR_ADRESSE"."Libellé de voie" = "Contacts"."Libellé de voie"
Voici la base :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.0.4 (x64)(1 septembre 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

J'essaie dès demain aux aurores, Jeanmimi !

je viens quand même de télécharger ta base, essayé, et il me semble que c'est très restrictif, qu'il manque des données.

Mais il faut vraiment que je regarde de près, et je dois partir pour la soirée...
Je verrai celà, ça a l'air super.

Encore merci pour l'aide !!! :bravo: :bravo: :super: :super:
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go
Avatar de l’utilisateur
Calife
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 31 oct. 2018 14:32

Re: Requête avec Critères de sélection & Regroupements.

Message par Calife »

Bonjour à tous !

@ jeanmimi

Merci mille fois pour ton aide, j'ai modifié tes requêtes, car il faut que je tienne compte du fait que plusieurs foyers différents peuvent habiter à la même adresse (Bâtiments avec plusieurs logements), et considérer que ceux qui portent le même nom habitent dans le même logement.
Le but de ma requête est de réduire au maximum les coûts d'envois de courriers postaux.
L'économie n'est pas négligeable, compte tenu du nombre très élevé de contacts dans ma base de données réelle.
Il y a une petite faille, car plusieurs familles qui portent le même nom peuvent habiter des logements différents à la même adresse.
Mais personne n'est devin, et si le cas cité à la ligne précédente s'avère, il n'y aura pas beaucoup "d'oubliés"...

Dans la base jointe, j'ai laissé tes requête en rajoutant "_Jeanmi" à la fin
Les miennes se terminent par "_Calife"

A noter :
J'ai dû raccourcir le nom de la requête "_Req_AGE_MAX_PAR_ADRESSE_Jeanmi" (J'avais mis 'Jeanmimi' à la fin)
J'ai eu un message d'erreur lors de l'éxécution de la requête :

"firebird_sdbc error:
*Dynamic SQL Error
*SQL error code = -104
*Name longer than database column size
caused by
'isc_dsql_prepare'


J'ai le même problème avec ma base réelle, je croyais que ça venait de la longueur de mes champs dans la Table, mais non !
ça vient de la longueur du nom de la requête... qui influe sur la limite à 30 caractères maxi dans le langage SQL
Le problème arrive lorsque l'on veut mettre une jointure, le message est équivoque...
Il parle bien de la longueur du Nom, mais de la taille d'une colonne de la base.
Comme j'interprète à ma manière, si quelqu'un pouvait m'explique... :idea: 8)

Requête de recherche des ID des contacts par adresse, en n'en sélectionnant qu'un seul s'ls portent le même nom, et privilégiant celui qui est le plus âgé :

Code : Tout sélectionner

SELECT "Libellé de voie", "numéro de voie", "Nom Choisi", "code du l'ugle" "CODE_UGLE",
MIN( "date_de_naissance" ) "AGE_MAX",
MIN( "ID" ) "ID_ELECTEUR" FROM "Contacts"
GROUP BY "Contacts"."Libellé de voie", "Contacts"."numéro de voie", "Contacts"."Nom Choisi", "Contacts"."code du l'ugle"
ORDER BY "Libellé de voie" ASC, "numéro de voie" ASC, "Nom Choisi" ASC, "CODE_UGLE" ASC
Requête finale avec toutes les informations des contacts sélectionnés :

Code : Tout sélectionner

SELECT "Contacts"."code du l'ugle", "Contacts"."commune", "Contacts"."Libellé de voie", "Contacts"."numéro de voie", "Contacts"."Nom Choisi", "Contacts"."prénoms", "Contacts"."date_de_naissance"

FROM "Req_AGE_MAX_PAR_ADRESSE_Calife", "Contacts"

WHERE "Req_AGE_MAX_PAR_ADRESSE_Calife"."ID_ELECTEUR" = "Contacts"."ID"
ORDER BY "Contacts"."commune"ASC, "Contacts"."Libellé de voie"ASC, "Contacts"."numéro de voie" ASC, "Contacts"."Nom Choisi" ASC
Ces deux requêtes fonctionnent et donnent les résultats attendus me semble-t-il...

Encore un immense merci à tous ceux qui m'ont aidé à régler mon problème, que je n'aurais jamais résolu seul !

Je mettrai ce sujet comme [RÉSOLU], si vous pensez que je ne me trompe pas.

Contacts_Firebird_01_2A.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 25.8.1.1 - Java (JRE) Eclipse Adoptium 24.0.2 - Mac OS Séquoia 15.3.2 - Processeur 3,5 GHz Intel Core i7 - CG AMD Radeon RX 580 8Go - Mémoire 16Go