simplifier 4 requêtes

Le
zzzz
Bonjour,

A mon fichier des effectifs des écoles de l'année 2009 je dois ajouter
la colonne des effectifs de la table 2010.
Ma 1re requête :
SELECT Tab09.NUMEtab, Tab09.Niveau, Tab09.Eff2009, Tab10.Eff2010]
FROM Tab09 INNER JOIN Tab10 ON (Tab09.NUMEtab = Tab10.NUMEtab) AND
(Tab09.Niveau = Tab10.Niveau);

Mais comme des écoles ou des niveaux ont disparu en 2010 et que des
écoles ou des niveaux ont été créés en 2010, cette requête ne v=
a
garder que les écoles et niveaux communs aux 2 tables.
Ce que je fais : je crée une requête LEFT JOOIN et une RIGHT JOIN,
ensuite une requête UNION; soit 4 requêtes en tout.

Est-il possible de faire tout ça en une seule requête (ou minimiser)
Merci d'avance
Eric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Albéric
Le #23491751
Bonjour zzzzzzzzzz

La structure de votre base est mal conçue.
Désolé.
Il ne peut pas y avoir de tables temporelles (Tab08, TAb09, ...10, ...11...)
dans une SGBDR. C'est une construction à la "Excel"

Cdt, Albéric

"zzzz"
Bonjour,

A mon fichier des effectifs des écoles de l'année 2009 je dois ajouter
la colonne des effectifs de la table 2010.
Ma 1re requête :
SELECT Tab09.NUMEtab, Tab09.Niveau, Tab09.Eff2009, Tab10.Eff2010]
FROM Tab09 INNER JOIN Tab10 ON (Tab09.NUMEtab = Tab10.NUMEtab) AND
(Tab09.Niveau = Tab10.Niveau);

Mais comme des écoles ou des niveaux ont disparu en 2010 et que des
écoles ou des niveaux ont été créés en 2010, cette requête ne va
garder que les écoles et niveaux communs aux 2 tables.
Ce que je fais : je crée une requête LEFT JOOIN et une RIGHT JOIN,
ensuite une requête UNION; soit 4 requêtes en tout.

Est-il possible de faire tout ça en une seule requête (ou minimiser)
Merci d'avance
Eric
Gloops
Le #23492471
Bonjour,

Je suis certes de l'avis d'Albéric.
Je me dis que peut-être il n'a pas été tendre en ne proposant aucun e
piste pour chercher à remédier au problème dénoncé. En revanche , il faut
certes reconnaître que ça lui permet une qualité : la concision.



Il s'agit d'appliquer une méthode d'analyse, qui est un outil précieu x
pour se poser les bonnes questions.

Une fois que la première approche a fait retenir les notions d'étudia nt,
d'année et de filière, parmi les bonnes questions on trouve:
- un étudiant peut-il fréquenter plusieurs filières ?
- un étudiant peut-il avoir plusieurs années d'entrée à l'école ?
- connaissant son année d'entrée, connaît-on son année de sortie ? En
a-t-on besoin ?

Selon les réponses on peut être amené à maintenir les objets qu'o n avait
imaginés au départ, à les dissocier selon un critère, à les reg rouper en
précisant une propriété ...

Parmi les méthodes d'analyse couramment pratiquées on peut citer Meri se
et UML. Pour ma part j'ai davantage de pratique de Merise. Si j'en crois
les réactions des utilisateurs une fois mes bases fournies, ce n'est pa s
tout faux.

Alors j'ai fait une rapide recherche, et les quelques minutes que j'y ai
consacrées m'ont mené là :
http://www.commentcamarche.net/contents/merise/concintro.php3

La première page me paraissait lisible, il me semblait que c'était un
critère déterminant.

Ensuite, pour vraiment valider cette sélection, peut-être faudrait-il y
passer plus de temps.
Peut-être te laisser me dire ce que tu en penses peut s'avérer rentab le
comme emploi du temps.

Ensuite, il n'est pas impossible qu'il faille revenir voir où tu en es
de ton cas particulier. Et qu'il faille aussi tenir compte de combien
d'autres projets tu es susceptible d'avoir à prendre en charge, pour
soit t'accompagner dans l'assimilation d'une méthode, soit t'aider à
structurer l'exemple qui t'occupe aujourd'hui.

ça ne prend pas le même temps, et ça ne permet pas les mêmes chos es.
Je ne suis d'ailleurs pas certain d'avoir le temps d'aller au bout dans
les deux cas, mais il y aura bien quelqu'un pour prendre la suite.

___________________________________
zzzz a écrit, le 22/06/2011 17:12 :
Bonjour,

A mon fichier des effectifs des écoles de l'année 2009 je dois ajou ter
la colonne des effectifs de la table 2010.
Ma 1re requête :
SELECT Tab09.NUMEtab, Tab09.Niveau, Tab09.Eff2009, Tab10.Eff2010]
FROM Tab09 INNER JOIN Tab10 ON (Tab09.NUMEtab = Tab10.NUMEtab) AND
(Tab09.Niveau = Tab10.Niveau);

Mais comme des écoles ou des niveaux ont disparu en 2010 et que des
écoles ou des niveaux ont été créés en 2010, cette requête ne va
garder que les écoles et niveaux communs aux 2 tables.
Ce que je fais : je crée une requête LEFT JOOIN et une RIGHT JOIN,
ensuite une requête UNION; soit 4 requêtes en tout.

Est-il possible de faire tout ça en une seule requête (ou minimiser )
Merci d'avance
Eric
zzzz
Le #23496251
On 23 juin, 01:11, Gloops
Bonjour,

Je suis certes de l'avis d'Albéric.
Je me dis que peut-être il n'a pas été tendre en ne proposant aucun e
piste pour chercher à remédier au problème dénoncé. En revanche , il faut
certes reconnaître que ça lui permet une qualité : la concision.

Il s'agit d'appliquer une méthode d'analyse, qui est un outil précieu x
pour se poser les bonnes questions.

Une fois que la première approche a fait retenir les notions d'étudia nt,
d'année et de filière, parmi les bonnes questions on trouve:
- un étudiant peut-il fréquenter plusieurs filières ?
- un étudiant peut-il avoir plusieurs années d'entrée à l'école ?
- connaissant son année d'entrée, connaît-on son année de sortie ? En
a-t-on besoin ?

Selon les réponses on peut être amené à maintenir les objets qu'o n avait
imaginés au départ, à les dissocier selon un critère, à les reg rouper en
précisant une propriété ...

Parmi les méthodes d'analyse couramment pratiquées on peut citer Meri se
et UML. Pour ma part j'ai davantage de pratique de Merise. Si j'en crois
les réactions des utilisateurs une fois mes bases fournies, ce n'est pa s
tout faux.

Alors j'ai fait une rapide recherche, et les quelques minutes que j'y ai
consacrées m'ont mené là :http://www.commentcamarche.net/contents/m erise/concintro.php3

La première page me paraissait lisible, il me semblait que c'était un
critère déterminant.

Ensuite, pour vraiment valider cette sélection, peut-être faudrait-il y
passer plus de temps.
Peut-être te laisser me dire ce que tu en penses peut s'avérer rentab le
comme emploi du temps.

Ensuite, il n'est pas impossible qu'il faille revenir voir où tu en es
de ton cas particulier. Et qu'il faille aussi tenir compte de combien
d'autres projets tu es susceptible d'avoir à prendre en charge, pour
soit t'accompagner dans l'assimilation d'une méthode, soit t'aider à
structurer l'exemple qui t'occupe aujourd'hui.

ça ne prend pas le même temps, et ça ne permet pas les mêmes chos es.
Je ne suis d'ailleurs pas certain d'avoir le temps d'aller au bout dans
les deux cas, mais il y aura bien quelqu'un pour prendre la suite.

___________________________________


Ma question était purement SQL. Je ne peux pas faire ça sous Excel,
car en réalité, en amont et en aval des 4 requêtes dont j'ai parlé,
interviennent d'autre requêtes (et d'autres tables). Mon but était
d'alléger la durée de l'exécution de la requête finale.
3stone
Le #23499071
Salut,

"zzzz"
Bonjour,

A mon fichier des effectifs des écoles de l'année 2009 je dois ajouter
la colonne des effectifs de la table 2010.
Ma 1re requête :
SELECT Tab09.NUMEtab, Tab09.Niveau, Tab09.Eff2009, Tab10.Eff2010]
FROM Tab09 INNER JOIN Tab10 ON (Tab09.NUMEtab = Tab10.NUMEtab) AND
(Tab09.Niveau = Tab10.Niveau);

Mais comme des écoles ou des niveaux ont disparu en 2010 et que des
écoles ou des niveaux ont été créés en 2010, cette requête ne va
garder que les écoles et niveaux communs aux 2 tables.
Ce que je fais : je crée une requête LEFT JOOIN et une RIGHT JOIN,
ensuite une requête UNION; soit 4 requêtes en tout.

Est-il possible de faire tout ça en une seule requête (ou minimiser)
Merci d'avance
Eric
----------------

Essaie...

Select c1, c2, cx from(select c1, c2, c3 ... from ... )
union
select c1, c2, cx from(select c1, c2, c3 ... from ... )

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Gloops
Le #23501151
zzzz a écrit, le 24/06/2011 12:12 :
Ma question était purement SQL. Je ne peux pas faire ça sous Excel,
car en réalité, en amont et en aval des 4 requêtes dont j'ai parl é,
interviennent d'autre requêtes (et d'autres tables). Mon but était
d'alléger la durée de l'exécution de la requête finale.



Ah, si maintenant tu veux t'embarquer avec Excel, là je décroche ...
zzzz
Le #23509071
On 25 juin, 14:24, "3stone"
Salut,

"zzzz"
Bonjour,

A mon fichier des effectifs des écoles de l'année 2009 je dois ajoute r
la colonne des effectifs de la table 2010.
Ma 1re requête :
SELECT Tab09.NUMEtab, Tab09.Niveau, Tab09.Eff2009, Tab10.Eff2010]
FROM Tab09 INNER JOIN Tab10 ON (Tab09.NUMEtab = Tab10.NUMEtab) AND
(Tab09.Niveau = Tab10.Niveau);

Mais comme des écoles ou des niveaux ont disparu en 2010 et que des
écoles ou des niveaux ont été créés en 2010, cette requête ne va
garder que les écoles et niveaux communs aux 2 tables.
Ce que je fais : je crée une requête LEFT JOOIN et une RIGHT JOIN,
ensuite une requête UNION; soit 4 requêtes en tout.

Est-il possible de faire tout ça en une seule requête (ou minimiser)
Merci d'avance
Eric
----------------

Essaie...

Select c1, c2, cx from(select c1, c2, c3 ... from ... )
union
select c1, c2, cx from(select c1, c2, c3 ... from ... )

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



J'étais absent du bureau hier.
Je ne comprends pas... L'union se fait entre 2 requêtes qui sont
pareils ?...ou entre les tables 2009 et 2010... Je ne vois pas où tu
veux en venir...
zzzz
Le #23513731
On 25 juin, 14:24, "3stone"
Salut,

Essaie...

Select c1, c2, cx from(select c1, c2, c3 ... from ... )
union
select c1, c2, cx from(select c1, c2, c3 ... from ... )

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Bonjour,
J'ai répondu hier et je ne comprends pas pourquoi ça n'a pas été
publié.
Je n'ai pas compris pourquoi tu fais une union entre la même table ?
ou alors entre les tables 2009 et 2010 ? Mais là non plus je ne
comprends pas ...
Gloops
Le #23515401
zzzz a écrit, le 29/06/2011 15:30 :
On 25 juin, 14:24, "3stone"
Salut,

Essaie...

Select c1, c2, cx from(select c1, c2, c3 ... from ... )
union
select c1, c2, cx from(select c1, c2, c3 ... from ... )

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Bonjour,
J'ai répondu hier et je ne comprends pas pourquoi ça n'a pas été
publié.
Je n'ai pas compris pourquoi tu fais une union entre la même table ?
ou alors entre les tables 2009 et 2010 ? Mais là non plus je ne
comprends pas ...




Bonjour,

Pour info ... Pour ma part, sur aioe.org, j'ai vu ta réponse hier soir.=
3stone
Le #23516051
Salut,

"zzzz"
Essaie...

Select c1, c2, cx from(select c1, c2, c3 ... from ... )
union
select c1, c2, cx from(select c1, c2, c3 ... from ... )

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



Bonjour,
J'ai répondu hier et je ne comprends pas pourquoi ça n'a pas été
publié.
Je n'ai pas compris pourquoi tu fais une union entre la même table ?
ou alors entre les tables 2009 et 2010 ? Mais là non plus je ne
comprends pas ...
---------------------------

Si les deux messages sont passé...


Mais, la question originale était :
"Est-il possible de faire tout ça en une seule requête (ou minimiser)"

La réponse était d'utiliser une/des sous-requêtes.
Sinon, puisque ta solution semble fonctionner, laisse ainsi ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
zzzz
Le #23520451
On 30 juin, 01:05, "3stone"
Salut,

"zzzz"

> Essaie...

> Select c1, c2, cx from(select c1, c2, c3 ... from ... )
> union
> select c1, c2, cx from(select c1, c2, c3 ... from ... )

> --
> A+
> Pierre (3stone) Access MVP
> Perso:http://www.3stone.be/
> MPFA:http://www.mpfa.info/(infos générales)

Bonjour,
J'ai répondu hier et je ne comprends pas pourquoi ça n'a pas été
publié.
Je n'ai pas compris pourquoi tu fais une union entre la même table ?
ou alors entre les tables 2009 et 2010 ? Mais là non plus je ne
comprends pas  ...
---------------------------

Si les deux messages sont passé...

Mais, la question originale était :
"Est-il possible de faire tout ça en une seule requête (ou minimiser) "

La réponse était d'utiliser une/des sous-requêtes.
Sinon, puisque ta solution semble fonctionner, laisse ainsi ;-)

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)



OK ...
Publicité
Poster une réponse
Anonyme