Bonsoir,je vous simplifie mon probleme.
Deux tables : CLIENT(IDCLIENT,NOM,...)
VISITE(IDVISITE,IDCLIENT,DATE,TYPE,...)
C'est une jontion 1-N comme vous le voyez.
Je veux repondre a la question "selectionne moi les clients d'un nom donne qui ont un nombre donné de visites d'un type donné, a une periode donnee"
J'ai une solution qui marche:
Code sans "Join" complet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM CLIENT WHERE CLIENT.IDCLIENT IN ( SELECT VISITE.IDCLIENT FROM VISITE GROUP BY VISITE.IDCLIENT HAVING COUNT(*) = pNombreVisites AND VISITE.TYPE = pTypeVisite AND VISITE.DATE BETWEEN 'pDebut' AND 'pFin' ) AND CLIENT.NOM = pNomClient
Seulement, ce n'est pas ultra performant, j'ai remarque une tres grande amelioration des perfomances en utilisant INNER JOIN.
Et la je bloque, je vois bien comment obtenir "selectionne moi les clients d'un nom donne d'un type donné, a une periode donnee" mais je perds le "qui ont un nombre donné de visites"
Or c'est une donnee imdispensable a prendre en compte.
Quelqu'un voit comment je pourrais avoir le beurre et l'argent du beurre? Merci d'avance
Code avec "Join" incomplet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT * FROM CLIENT JOIN VISITE ON CLIENT.IDCLIENT = VISITE.IDCLIENT AND VISITE.TYPE = pTypeVisite AND VISITE.DATE BETWEEN 'pDebut' AND 'pFin' WHERE CLIENT.NOM = pNomClient
A noter: je travaille avec windev et hyperfile, j'ai l'impression que helas, toputes les commandes sql ne sont pas supportees (je n'arrive pas a faire de JOIN multiples par exemple, mais c'est un autre probleme)
Partager