|
| Débuté par richard.clerc, 14 déc. 2004 17:48 - 6 réponses |
| |
| | | |
|
| |
| Posté le 14 décembre 2004 - 17:48 |
j'ai 3 tables : Activites , ChoixActivite et Journal avec ces descriptions : ChoixActivité : LibelleActivite , AgeMini ,AgeMaxi , ... Activite : LibelleActivite , DateActivite , ... Journal : Jour , AgeDuJour ,...
Le journal regroupe les jours d'inscriptions (l'age y est calculer à l'inscription pour des raisons pratiques); Les activites sont crées dans un planning , c'est en fait l'affectation d'un Element de ChoixActivite à un jour.
Je veux récuperer la liste des activités accessibles à la personne (AgeMini < AgeDujour < AgeMaxi ) pour les jours d'inscriptions.
j'ai essayé ça , mais il ne tient pas compte de la restrictions d'âge ...
SELECT DISTINCT ACTIVITES.IDActivités FROM CHOIXACTIVITE JOIN ACTIVITES ON ACTIVITES.LibelleActivite=CHOIXACTIVITE.LibelleActivite , JOURNAL JOIN ACTIVITES ON ACTIVITES.DATEACTIVITE=JOURNAL.JOUR WHERE JOURNAL.IDPersonneS AND ACTIVITES.NOMCentre='CentreTest'AND ( JOURNAL.ageDuJour > ChoixActivité.ageMinimumActivité ) AND ( JOURNAL.ageDuJour < ChoixActivité.ageMaximumActivité )
merci . |
| |
| |
| | | |
|
| | |
| |
| Posté le 14 décembre 2004 - 18:39 |
essai avec des LEFT JOIN plutot que des JOIN
"Richard" <richard.clerc@oreka.com> a écrit dans le message de news:41bf0229@news.pcsoft.fr...
j'ai 3 tables : Activites , ChoixActivite et Journal avec ces descriptions : ChoixActivité : LibelleActivite , AgeMini ,AgeMaxi , ... Activite : LibelleActivite , DateActivite , ... Journal : Jour , AgeDuJour ,...
Le journal regroupe les jours d'inscriptions (l'age y est calculer à l'inscription pour des raisons pratiques); Les activites sont crées dans
un
planning , c'est en fait l'affectation d'un Element de ChoixActivite à un jour.
Je veux récuperer la liste des activités accessibles à la personne (AgeMini
< AgeDujour < AgeMaxi ) pour les jours d'inscriptions.
j'ai essayé ça , mais il ne tient pas compte de la restrictions d'âge ...
SELECT DISTINCT ACTIVITES.IDActivités FROM CHOIXACTIVITE JOIN ACTIVITES ON ACTIVITES.LibelleActivite=CHOIXACTIVITE.LibelleActivite , JOURNAL JOIN ACTIVITES ON ACTIVITES.DATEACTIVITE=JOURNAL.JOUR WHERE JOURNAL.IDPersonneS AND ACTIVITES.NOMCentre='CentreTest'AND ( JOURNAL.ageDuJour > ChoixActivité.ageMinimumActivité ) AND
( JOURNAL.ageDuJour < ChoixActivité.ageMaximumActivité )
merci .
|
| |
| |
| | | |
|
| | |
| |
| Posté le 14 décembre 2004 - 19:18 |
Pourquoi passer par des joint ? Une jointure directe fonctionne aussi:
select distinct activites.idactivites from choiactivite,activites,journal where activites.dateactivite = journal.jour and ACTIVITES.LibelleActivite=CHOIXACTIVITE.LibelleActivite and ACTIVITES.NOMCentre='CentreTest' and JOURNAL.IDPersonneS and ( JOURNAL.ageDuJour > ChoixActivité.ageMinimumActivité ) AND > ( JOURNAL.ageDuJour < ChoixActivité.ageMaximumActivité )
J'ai juste deux remarques : la jointure sur le libelle ne me semble pas top ( une jointure porte plutôt sur une clé ), et j'éciterai à ta place d'utiliser des accents dans les nom des champs.
Frédéric. |
| |
| |
| | | |
|
| | |
| |
| Posté le 14 décembre 2004 - 19:18 |
Pourquoi passer par des joint ? Une jointure directe fonctionne aussi:
select distinct activites.idactivites from choixactivite,activites,journal where activites.dateactivite = journal.jour and ACTIVITES.LibelleActivite=CHOIXACTIVITE.LibelleActivite and ACTIVITES.NOMCentre='CentreTest' and JOURNAL.IDPersonneS and ( JOURNAL.ageDuJour > ChoixActivité.ageMinimumActivité ) AND > ( JOURNAL.ageDuJour < ChoixActivité.ageMaximumActivité )
J'ai juste deux remarques : la jointure sur le libelle ne me semble pas top ( une jointure porte plutôt sur une clé ), et j'éviterai à ta place d'utiliser des accents dans les noms des champs.
Frédéric. |
| |
| |
| | | |
|
| | |
| |
| Posté le 15 décembre 2004 - 16:23 |
mon problème certainement lié à ceci : SELECT DISTINCT IDACTIVITES , IDJOURNAL ,AGEDUJOUR FROM JOURNAL JOIN ACTIVITES ON JOURNAL.JOUR¬TIVITES.DATEACTIVITE , CHOIXACTIVITE WHERE JOURNAL.IDPERSONNES AND JOURNAL.NOMCENTRE='CENTRE DE VACANCES2003/2004Hiver' and JOURNAL.AGEDUJOUR > AGEMINIMUMACTIVITE
me renvoit 8 enregistrements , et si je veut afficher l'age mini dans les résultats SELECT DISTINCT IDACTIVITES , IDJOURNAL ,AGEDUJOUR,AGEMINIMUMACTIVITE FROM JOURNAL JOIN ACTIVITES ON JOURNAL.JOUR¬TIVITES.DATEACTIVITE , CHOIXACTIVITE WHERE JOURNAL.IDPERSONNES AND JOURNAL.NOMCENTRE='CENTRE DE VACANCES2003/2004Hiver' and JOURNAL.AGEDUJOUR > AGEMINIMUMACTIVITE
je me retrouve alors avec 16 résultats ..... POURQUOI ???
"Frédéric DEMILLY" <f.demilly@pacificpeche.fr> a écrit dans le message de news: 41bf1663@news.pcsoft.fr...
Pourquoi passer par des joint ? Une jointure directe fonctionne aussi:
select distinct activites.idactivites from choixactivite,activites,journal
where activites.dateactivite = journal.jour and ACTIVITES.LibelleActivite=CHOIXACTIVITE.LibelleActivite and ACTIVITES.NOMCentre='CentreTest' and JOURNAL.IDPersonneS and ( JOURNAL.ageDuJour > ChoixActivité.ageMinimumActivité ) AND
( JOURNAL.ageDuJour < ChoixActivité.ageMaximumActivité )
J'ai juste deux remarques : la jointure sur le libelle ne me semble pas top ( une jointure porte plutôt sur une clé ), et j'éviterai à ta place d'utiliser des accents dans les noms des champs.
Frédéric.
|
| |
| |
| | | |
|
| | |
| |
| Posté le 15 décembre 2004 - 17:04 |
C'est tout simple : la première requête renvoie 3 champs, et la deuxième 4. Donc grâce au ( ou à cause du ) DISTINCT, la première regroupe les lignes du résultat qui ont le même IdActivite, le même IdJournal et le même Agedujour, même s'il ont des ageminimumactivite différents. Alors que la deuxième les distingue.
Frédéric. |
| |
| |
| | | |
|
| | |
| |
| Posté le 20 décembre 2004 - 09:53 |
comment faire alors ??
"Frédéric DEMILLY" <f.demilly@pacificpeche.fr> a écrit dans le message de news: 41c04868@news.pcsoft.fr...
C'est tout simple : la première requête renvoie 3 champs, et la deuxième
4. Donc grâce au ( ou à cause du ) DISTINCT, la première regroupe les lignes du résultat qui ont le même IdActivite, le même IdJournal et le même Agedujour, même s'il ont des ageminimumactivite différents. Alors que la deuxième les distingue.
Frédéric.
|
| |
| |
| | | |
|
| | | | |
| | |
|