Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requête SQL [WD10]

4 réponses
Avatar
wd_newbie
D=E9sol=E9 si ma requ=EAte est basique ... mais je me prends la t=EAte !!

Un truc tout b=EAte , soit une table "Membres" et une table
"Abonnements" li=E9es par un numero de membre. (liaison 1;n)

dans la table abonnements, je peux avoir plusieur fois le m=EAme numero
de membre si il a renouvele plusieurs fois son abo.

n=B0membre / date renouvellement / date echeance

Je voudrai selectionner tous les membres contenus dans ma table
membres et avec seulement le dernier renouvellement d'abonnement ...
et c'est la que je s=E8che. Je remene toutes les lignes du fichier
abonnement, et donc j'ai pleins de doublons ...


n=B0membre / nommembre/ prenomMembre / date renouvellement / date
echeance


Je pense recherche mes membres + abonnement et trier par date de
renouvellement pour ne garder que le plus r=E9cent, mais je n'arrive pas
a ne garder qu'une seule ligne par membre. j'ai essay=E9 avec des SELECT
DISTINCT(nummembre) , mais il me retourne toujours les 2-3 lignes pour
un seul membre.

Une id=E9e ?

Olivier

4 réponses

Avatar
API
Personnellement j'aurai ajouter un flag pour faire simple, lequel est
coché au dernier abonnement et requête sur les flags cochés
Avatar
Pierre BOUSQUET
un truc de ce genre peut-être :

SELECT Membres.nom, ab.date_abonnement
FROM Membres
LEFT JOIN (SELECT cle_membre, MAX(date_abonnement) as date_abonnement
FROM Abonnements) ab ON ab.cle_membre=Membres.cle_membre

wd_newbie a couché sur son écran :
Désolé si ma requête est basique ... mais je me prends la tête !!

Un truc tout bête , soit une table "Membres" et une table
"Abonnements" liées par un numero de membre. (liaison 1;n)

dans la table abonnements, je peux avoir plusieur fois le même numero
de membre si il a renouvele plusieurs fois son abo.

n°membre / date renouvellement / date echeance

Je voudrai selectionner tous les membres contenus dans ma table
membres et avec seulement le dernier renouvellement d'abonnement ...
et c'est la que je sèche. Je remene toutes les lignes du fichier
abonnement, et donc j'ai pleins de doublons ...


n°membre / nommembre/ prenomMembre / date renouvellement / date
echeance


Je pense recherche mes membres + abonnement et trier par date de
renouvellement pour ne garder que le plus récent, mais je n'arrive pas
a ne garder qu'une seule ligne par membre. j'ai essayé avec des SELECT
DISTINCT(nummembre) , mais il me retourne toujours les 2-3 lignes pour
un seul membre.

Une idée ?

Olivier



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "
Avatar
wd_newbie
On 28 mar, 14:07, Pierre BOUSQUET wrote:
un truc de ce genre peut-être :

SELECT Membres.nom, ab.date_abonnement
FROM Membres
LEFT JOIN (SELECT cle_membre, MAX(date_abonnement) as date_abonnement
FROM Abonnements) ab ON ab.cle_membre=Membres.cle_membre



et non !! somme toute , j'ai simulé la requete avec des autres
fichiers sous WD ( mon problème était sur des fichiers Access que je
dois importer ) et pour ce problème , enfin c'était plus simple que je
pensais , j'étais parti dans des trucs pas croyables ... la solution :

SELECT nommembre, PrenomMembre,refmembre , max(dateEcheance ) as
dDate_fin
FROM wmembres,wabo
WHERE wmembres.NoMembre = wabo.RefMembre
GROUP BY nommembre, PrenomMembre,refmembre
ORDER BY refmembre

merci pour votre aide , le MAX(date_abonnement) m'a remis sur la bonne
piste

Olivier
Avatar
Pierre BOUSQUET
parfois on ne pense pas simplement...

wd_newbie vient de nous annoncer :
On 28 mar, 14:07, Pierre BOUSQUET wrote:
un truc de ce genre peut-être :

SELECT Membres.nom, ab.date_abonnement
FROM Membres
LEFT JOIN (SELECT cle_membre, MAX(date_abonnement) as date_abonnement
FROM Abonnements) ab ON ab.cle_membre=Membres.cle_membre



et non !! somme toute , j'ai simulé la requete avec des autres
fichiers sous WD ( mon problème était sur des fichiers Access que je
dois importer ) et pour ce problème , enfin c'était plus simple que je
pensais , j'étais parti dans des trucs pas croyables ... la solution :

SELECT nommembre, PrenomMembre,refmembre , max(dateEcheance ) as
dDate_fin
FROM wmembres,wabo
WHERE wmembres.NoMembre = wabo.RefMembre
GROUP BY nommembre, PrenomMembre,refmembre
ORDER BY refmembre

merci pour votre aide , le MAX(date_abonnement) m'a remis sur la bonne
piste

Olivier



--
Pierre BOUSQUET

" Ne me dites pas que ce problème est difficile.
S'il n'était pas difficile, ce ne serait pas un problème. "