[Résolu] Erreur sur Fonction Groupe dans requête

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.
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

[Résolu] Erreur sur Fonction Groupe dans requête

Message par Eric99 »

Bonjour,
Pour récupérer les adresses mail sur une période donnée j'effectue la requête suivante :

Code : Tout sélectionner

SELECT "TabFacture"."RefAdhFacture", "TabAdherent"."Mail" || ';' AS "CourrielSejour", "TabAdherent"."NomAdherent", "TabAdherent"."PrenomAdherent", "TabAdherent"."CP", "TabAdherent"."RefCodeRegion", "TabFacture"."DateArrivee", "TabFacture"."DateDepart" FROM "TabFacture", "TabAdherent", "XConstantes" WHERE "TabFacture"."RefAdhFacture" = "TabAdherent"."IdAdherent" AND "TabAdherent"."Mail" || ';' > '0' AND "TabFacture"."DateArrivee" >= "XConstantes"."DebutSejour" AND "TabFacture"."DateDepart" <= "XConstantes"."FinSejour" AND "TabAdherent"."Mail" <> 'adresse_courriel@modifier' ORDER BY "CourrielSejour" ASC, "TabFacture"."DateArrivee" ASC
extraction jointe
TriCourriel.png
qui fonctionne très bien mais, évidemment, j'ai plusieurs fois la même adresse mail si l'adhérent a eu plusieurs achats sur la période choisie (voir ci-dessus 2 lignes 649).

Pour éliminer ces doublons je veux utiliser la fonction "Groupe" sur le champ "TabFacture"."RefAdhFacture" avec la requête suivante :

Code : Tout sélectionner

SELECT "TabFacture"."RefAdhFacture", "TabAdherent"."Mail" || ';' AS "CourrielSejour", "TabAdherent"."NomAdherent", "TabAdherent"."PrenomAdherent", "TabAdherent"."CP", "TabAdherent"."RefCodeRegion", "TabFacture"."DateArrivee", "TabFacture"."DateDepart" FROM "TabFacture", "TabAdherent", "XConstantes" WHERE "TabFacture"."RefAdhFacture" = "TabAdherent"."IdAdherent" AND "TabAdherent"."Mail" || ';' > '0' AND "TabFacture"."DateArrivee" >= "XConstantes"."DebutSejour" AND "TabFacture"."DateDepart" <= "XConstantes"."FinSejour" AND "TabAdherent"."Mail" <> 'adresse_courriel@modifier' GROUP BY "TabFacture"."RefAdhFacture" ORDER BY "CourrielSejour" ASC, "TabFacture"."DateArrivee" ASC
mais lorsque je lance la requête j'obtiens le message suivant :
Impossible.png

Où est mon erreur ?

Ce sont les requêtes :
- "ReqMailAdherentFactureSejour" (sans suppression doublon) et
- "ReqMailAdherentFactureSejourNew" (avec essai de suppression doublon)
Nota : Il y a une erreur macro à l'ouverture de la base car j'ai supprimé tous les formulaires pour alléger la base.

Merci de votre aide.
Éric
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Eric99 le 22 mars 2023 10:04, modifié 2 fois.
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Erreur sur Fonction Groupe dans requête

Message par jeanmimi »

Bonjour,
Sans SQL, une solution est proposée ici :
viewtopic.php?p=279256#p279256
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: Erreur sur Fonction Groupe dans requête

Message par Eric99 »

jeanmimi a écrit : 19 mars 2023 13:24 Bonjour,
Sans SQL, une solution est proposée ici :
viewtopic.php?p=279256#p279256
Bonjour et merci pour votre réponse.

Désolé mais je n'arrive pas à comprendre la subtilité de l'auto-filtre ni comment je dois m'y prendre concrètement. Il doit me manquer une info.

Est-ce à dire que ma requête avec la fonction "Groupe" ne peut pas fonctionner comme je l'ai établie et qu'il n'y a pas de solution en SQL ?
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Erreur sur Fonction Groupe dans requête

Message par jeanmimi »

Eric99 a écrit : 19 mars 2023 15:09 Est-ce à dire que ma requête avec la fonction "Groupe" ne peut pas fonctionner comme je l'ai établie et qu'il n'y a pas de solution en SQL ?
Je n'ai pas de souci avec la fonction GROUP BY dans mes requêtes.
Ce serait plutôt avec ta Base qu'il faudrait tester si elle était jointe.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: Erreur sur Fonction Groupe dans requête

Message par Eric99 »

jeanmimi a écrit : 19 mars 2023 16:14 Je n'ai pas de souci avec la fonction GROUP BY dans mes requêtes.
Ce serait plutôt avec ta Base qu'il faudrait tester si elle était jointe.
Je pensais pouvoir faire sans mais la voici. Ce sont les requêtes :
- "ReqMailAdherentFactureSejour" (sans suppression doublon) et
- "ReqMailAdherentFactureSejourNew" (avec essai de suppression doublon)

Nota : Il y a une erreur macro à l'ouverture de la base car j'ai supprimé tous les formulaires pour alléger la base.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Erreur sur Fonction Groupe dans requête

Message par jeanmimi »

Eric99 a écrit : 19 mars 2023 17:51 - "ReqMailAdherentFactureSejourNew" (avec essai de suppression doublon)
Il n'y a pas en fait de doublon dans cette requête, puisque les données DateArrivée et DateDépart sont différentes pour les 3 enregistrements, parce que TARTEMPION a deux séjours avec des dates différentes.
Si tu lances la requête, en supprimant le Groupement, tu auras les 3 enregistrements avec des dates différentes pour TARTEMPION, d'où l'impossibilité de Groupe.
Requête sans doublon sauf pour adresses mails.jpg
Si tu désactives les deux colonnes DateArrivée et DateDépart , en supprimant le Groupe, mais en laissant les critères inscrits, il n'y a que deux enregistrements affichés et aucun doublon.
Requête sans doublon.jpg
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
godefroy
Membre prOOscrit
Messages : 106
Inscription : 18 févr. 2023 18:54

Re: Erreur sur Fonction Groupe dans requête

Message par godefroy »

Bonsoir,

As-tu songé à une solution Formulaires?

Je joins exemple.

Salutations

Godefroy
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.7 Ubuntu 18.04
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 744
Inscription : 20 déc. 2017 14:45

Re: Erreur sur Fonction Groupe dans requête

Message par rollmops »

Bonjour,

Le schéma relationnel m'apparaît erroné.
C'est sans doute la cause des doublons.
Cette liaison est inutile puisque l'on obtient l'adhérent par la facture.
2023-03-20 08_45_23-Window.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OpenOffice 4.1.16 - Windows 11
+ LibO 25.8.5 (occasionnel pour test)
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: Erreur sur Fonction Groupe dans requête

Message par Eric99 »

jeanmimi a écrit : 19 mars 2023 19:38 Il n'y a pas en fait de doublon dans cette requête, puisque les données DateArrivée et DateDépart sont différentes pour les 3 enregistrements, parce que TARTEMPION a deux séjours avec des dates différentes.
Si tu lances la requête, en supprimant le Groupement, tu auras les 3 enregistrements avec des dates différentes pour TARTEMPION, d'où l'impossibilité de Groupe.
Si tu désactives les deux colonnes DateArrivée et DateDépart , en supprimant le Groupe, mais en laissant les critères inscrits, il n'y a que deux enregistrements affichés et aucun doublon.
Requête sans doublon.jpg
Oui puisque dans ce schéma tu reprends uniquement le fichier Adhérents. Mon objectif est de trier les personnes présentent entre deux dates pour pouvoir adresser un mail uniquement à ces personnes et, comme dans cet exemple, Tartempion est présent 2 fois ne pas lui envoyer deux mails donc grouper les 2 lignes.
Je pensais, naïvement, que la fonction Groupe ne prenait en compte que le paramètre sur lequel il était noté. Ici le numéro d'adhérent.

Je continue à chercher...
LibO 24.2.1 UbuntuMATE 22.04
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: Erreur sur Fonction Groupe dans requête

Message par Eric99 »

rollmops a écrit : 20 mars 2023 07:50 Bonjour,
Le schéma relationnel m'apparaît erroné.
C'est sans doute la cause des doublons.
Cette liaison est inutile puisque l'on obtient l'adhérent par la facture.
Merci de votre aide.
Cependant cette relation me semble nécessaire car j'ai d'une part une facture au nom d'un adhérent (RefAdhFacture) avec dans cette facture plusieurs adhérents inscrits (RefAdhInscrit) une famille ou un groupe qui ce retrouvent dans la facture détaillée. Je dois ensuite pouvoir dresser une liste des adhérents inscrits.
J'ai toutefois effectué un essai en la supprimant cela ne change rien à ma problématique.

La présence des doublons est normale puisque je trie des factures sur une période donnée où le client peut avoir plusieurs factures. Je veux ensuite envoyer un mail aux personnes ayant été facturés sur cette période sans adresser plusieurs mails à la même personne. Je pensais que la fonction Groupe me permettait d'effectuer ce tri mais j'ai un retour d'erreur (voir mon premier message). J'ai l'impression que c'est ce message qu'il faut analyser. Mais je ne suis pas suffisamment "pointu" pour le faire.

Éric


La modération vous a écrit: :alerte: Merci de ne pas poster plusieurs messages à la suite !
Tant que vous n'avez pas reçu de nouvelle réponse, cela ne sert à rien et votre monologue rallonge inutilement la lecture du fil de discussion.
Si vous devez ajouter un complément d'information, le bouton "Modifié" (petit crayon) à la droite du message permet d'y remédier.

En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

LibO 24.2.1 UbuntuMATE 22.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Erreur sur Fonction Groupe dans requête

Message par jeanmimi »

Eric99 a écrit : 20 mars 2023 09:34 La présence des doublons est normale puisque je trie des factures sur une période donnée où le client peut avoir plusieurs factures. Je veux ensuite envoyer un mail aux personnes ayant été facturés sur cette période sans adresser plusieurs mails à la même personne
Dans ce cas, il faudrait que tu regardes une autre instruction SQL, comme MAX :
ftopic33316.html
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
godefroy
Membre prOOscrit
Messages : 106
Inscription : 18 févr. 2023 18:54

Re: Erreur sur Fonction Groupe dans requête

Message par godefroy »

Très Cher Eric,

L'incontournable Eric...

Mon Cher ami, anvant que le tout tourne en ratatouille, j'aimerais vous inviter à remettre les pieds sur terre, en vous penchant sul le peti fil que pulcinopio avait posté l'année dernière, c.à.d. viewtopic.php?t=65816.

Loin de moi toute idée de vous manipuler. J'aimerais tout simplement vous inviter à réfléchir....

Bien à vous

Godefroy
Libre Office 6.0.7 Ubuntu 18.04
Eric99
Membre hOOnoraire
Membre hOOnoraire
Messages : 127
Inscription : 17 janv. 2020 10:22

Re: Erreur sur Fonction Groupe dans requête

Message par Eric99 »

Bonjour,
Eureka !

Je me suis vraiment emmélé les "pinceaux" mais c'est faute de bien connaître la fonction GROUP BY

Il suffisait que dans ma requête je décoche les champs dont je n'ai pas besoin en affichage puis que je regroupe tous les champs identiques et non pas un seul comme je le faisais :fou: :fou: :fou:

Code : Tout sélectionner

SELECT DISTINCT "TabAdherent"."IdAdherent", "TabAdherent"."Mail" AS "CourrielSejour", "TabAdherent"."NomAdherent", "TabAdherent"."PrenomAdherent", "TabAdherent"."CP" FROM "TabAdherent", "TabFacture", "XConstantes" WHERE "TabAdherent"."IdAdherent" = "TabFacture"."RefAdhFacture" AND "TabFacture"."DateDepart" <= "XConstantes"."FinSejour" AND "TabFacture"."DateArrivee" >= "XConstantes"."DebutSejour" GROUP BY "TabAdherent"."IdAdherent", "TabAdherent"."Mail", "TabAdherent"."NomAdherent", "TabAdherent"."PrenomAdherent", "TabAdherent"."CP" HAVING ( ( "TabAdherent"."Mail" > '0' ) OR ( "TabAdherent"."Mail" <> 'adresse_courriel@modifier' ) ) ORDER BY "CourrielSejour" ASC
Merci de m'avoir suivi...
LibO 24.2.1 UbuntuMATE 22.04