OVH Cloud OVH Cloud

Requête complexe

10 réponses
Avatar
Marijo
Je dois extraire des informations précises de ma base de données. Voici un
exemple:

Conférenciers qui n'ont pas parlé dans la région de Québec depuis 12 mois.
Si je demande dans mes critères de recherches :
Date : >=2004-01-01 et <=2004-12-31
Région: pas "Québec"

Si un conférencier a parlé ailleurs dans cette période, le nom du
conférencier s'affiche même s'il a parlé à Québec. Y a-t-il une façon de
demander à ma requête de n'afficher les noms de conférenciers seulement si
ils n'apparaissent pas à Québec?

Merci de bien vouloir m'aider
--
Marijo

10 réponses

Avatar
Philippe T [MS]
Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Marijo" wrote in message
news:
Je dois extraire des informations précises de ma base de données. Voici un
exemple:

Conférenciers qui n'ont pas parlé dans la région de Québec depuis 12 mois.
Si je demande dans mes critères de recherches :
Date : > 04-01-01 et < 04-12-31
Région: pas "Québec"

Si un conférencier a parlé ailleurs dans cette période, le nom du
conférencier s'affiche même s'il a parlé à Québec. Y a-t-il une façon de
demander à ma requête de n'afficher les noms de conférenciers seulement si
ils n'apparaissent pas à Québec?

Merci de bien vouloir m'aider
--
Marijo


Avatar
Eric
Bonjour Marijo,

Avec une sous-requête sur le critère du champ NumConf
du genre :

Pas In(select Numconf from Tatable_Requête where Region="Quebec")

Tu enlèves le critère sur la Région et maintiens le critère sur la date.

Tu peux éventuellement ne pas afficher le NumConf

Ok ?

A+
Eric



=?Utf-8?B?TWFyaWpv?= écrivait
news::

Je dois extraire des informations précises de ma base de données.
Voici un exemple:

Conférenciers qui n'ont pas parlé dans la région de Québec depuis
12 mois. Si je demande dans mes critères de recherches :
Date : > 04-01-01 et < 04-12-31
Région: pas "Québec"

Si un conférencier a parlé ailleurs dans cette période, le nom du
conférencier s'affiche même s'il a parlé à Québec. Y a-t-il une
façon de demander à ma requête de n'afficher les noms de
conférenciers seulement si ils n'apparaissent pas à Québec?

Merci de bien vouloir m'aider


Avatar
Eric
Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur l'année à une
conférence au Québec et une autre en France. Soit A cette personne,
(NumConf 1). Tu auras donc 2 enregistrements : un pour le Québec et un pour
la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france



Avatar
Marijo
C'est ce que j'ai fait. Sur ma ligne "Critères" j'ai écrit : Pas "Québec"
dans le champ "Région" et > 04-01-01 et < 04-12-31 dans le champ "Date.
J'ai également essayé de créer une sous-requête, mais si le confériencier
"Cameron" a parlé dans une autre région durant la période donnée, son nom
apparaîtra dans le résultat...

"Philippe T [MS]" wrote:

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Marijo" wrote in message
news:
Je dois extraire des informations précises de ma base de données. Voici un
exemple:

Conférenciers qui n'ont pas parlé dans la région de Québec depuis 12 mois.
Si je demande dans mes critères de recherches :
Date : > 04-01-01 et < 04-12-31
Région: pas "Québec"

Si un conférencier a parlé ailleurs dans cette période, le nom du
conférencier s'affiche même s'il a parlé à Québec. Y a-t-il une façon de
demander à ma requête de n'afficher les noms de conférenciers seulement si
ils n'apparaissent pas à Québec?

Merci de bien vouloir m'aider
--
Marijo







Avatar
Eric
re,


J'ai également essayé de créer une sous-requête,
mais si le confériencier "Cameron" a parlé dans une autre région
durant la période donnée, son nom apparaîtra dans le résultat...



Je suis surpris !

Voila le code et les données de la table:
(Pour éviter de manipuler plusieurs tables et donc des INNER JOIN, j'ai mis
dans la table le nom du conférencier, question de rapidité pour la réponse)

Code du SQL :
SELECT Nom, Region, Dateconf
FROM Table2
WHERE NumConf Not In (select NumConf from table2 where region = "Quebec");

Structure de la table Table2
NumConf Nom Region Dateconf
1 A Quebec 01/02/2004
1 A Paris 01/04/2004
2 B Paris 01/03/2004

Je n'ai pas fait le test sur la date, il est vrai, car les dates sont pour
l'année 2004 mais je ne crois pas que ca interfère.

La requête retourne :
Nom Region Dateconf
B Paris 01/03/2004

A+
Eric

Avatar
Marijo
C'est exactement ce qui se produit. Pourtant, ce que j'aimerais faire c'est
pouvoir établir rapidement des listes de conférenciers qui n'ont pas parlé
dans une région donnée depuis 12 mois.

Telle que montée, ma requête ne me donne pas le bon résultat. Il faudrait
que je puisse dire à Access de me donner le nom des conférenciers seulement
si ils n'apparaissent pas en union avec la région "Québec" et c'est cette
syntaxe que je ne réussis pas à élaborer.

"Eric" wrote:

Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur l'année à une
conférence au Québec et une autre en France. Soit A cette personne,
(NumConf 1). Tu auras donc 2 enregistrements : un pour le Québec et un pour
la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france






Avatar
Eric
...

Voir mes posts ci-dessous, dans le même fil, en réponse à ta question.

A+
Eric

=?Utf-8?B?TWFyaWpv?= écrivait
news::

C'est exactement ce qui se produit. Pourtant, ce que j'aimerais faire
c'est pouvoir établir rapidement des listes de conférenciers qui
n'ont pas parlé dans une région donnée depuis 12 mois.

Telle que montée, ma requête ne me donne pas le bon résultat. Il
faudrait que je puisse dire à Access de me donner le nom des
conférenciers seulement si ils n'apparaissent pas en union avec la
région "Québec" et c'est cette syntaxe que je ne réussis pas à
élaborer.

"Eric" wrote:

Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur
l'année à une conférence au Québec et une autre en France. Soit A
cette personne, (NumConf 1). Tu auras donc 2 enregistrements : un
pour le Québec et un pour la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin Microsoft Services France
http://www.microsoft.com/france









Avatar
Philippe T [MS]
Non tu as raison, je n'avais pas vu le problème en fait !!!

Eric t'a a mon avis donné la bonne solution.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Eric" wrote in message
news:
Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur l'année à une
conférence au Québec et une autre en France. Soit A cette personne,
(NumConf 1). Tu auras donc 2 enregistrements : un pour le Québec et un
pour

la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france





Avatar
Marijo
Bonjour Éric,

Je te remercie pour ton aide précieuse. J'ai un peu de mal à tout déchiffrer
en mode SQL. Access me dit toujours qu'il y a erreur de syntaxe. Voici mes
codes SQL, peux-tu m'aider à trouver l'erreur?

SELECT SFC.[SFC de], SFC.Date, SFC.Région, SFC.[Nom du conférencier],
[Coordonnées des conférenciers].Langue, [Niveau d'épingle].Niveau, [Niveau
d'épingle].Priorité, SFC.Hôtes, SFC.Emplacement, SFC.Commentaires
FROM ([Coordonnées des conférenciers] INNER JOIN (Hôtes INNER JOIN SFC ON
Hôtes.Hôtes = SFC.Hôtes) ON [Coordonnées des conférenciers].[Nom du
conférencier] = SFC.[Nom du conférencier]) INNER JOIN [Niveau d'épingle] ON
[Coordonnées des conférenciers].[Niveau d'épingle] = [Niveau d'épingle].Niveau
WHERE (((SFC.Nom du conférencier) Not In (select (SFC.Nom du conférencier)
WHERE (((SFC.Date)>=#2/1/2004# And (SFC.Date)<#12/31/2004#) AND (Not
(SFC.Région)="Québec") AND (([Niveau d'épingle].Priorité)>=7)));


....

Voir mes posts ci-dessous, dans le même fil, en réponse à ta question.

A+
Eric

=?Utf-8?B?TWFyaWpv?= écrivait
news::

C'est exactement ce qui se produit. Pourtant, ce que j'aimerais faire
c'est pouvoir établir rapidement des listes de conférenciers qui
n'ont pas parlé dans une région donnée depuis 12 mois.

Telle que montée, ma requête ne me donne pas le bon résultat. Il
faudrait que je puisse dire à Access de me donner le nom des
conférenciers seulement si ils n'apparaissent pas en union avec la
région "Québec" et c'est cette syntaxe que je ne réussis pas Ã
élaborer.

"Eric" wrote:

Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur
l'année à une conférence au Québec et une autre en France. Soit A
cette personne, (NumConf 1). Tu auras donc 2 enregistrements : un
pour le Québec et un pour la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin Microsoft Services France
http://www.microsoft.com/france













Avatar
Philippe T [MS]
Bonjour,

Le mieux est d'écrire la requête comme suit (plus lisible) :

SELECT SFC.[SFC de], SFC.Date, SFC.Région, SFC.[Nom du conférencier],
[Coordonnées des conférenciers].Langue, [Niveau d'épingle].Niveau,
[Niveau
d'épingle].Priorité, SFC.Hôtes, SFC.Emplacement, SFC.Commentaires
FROM [Coordonnées des conférenciers]
INNER JOIN Hôtes ON [Coordonnées des conférenciers].[Nom du
conférencier] = SFC.[Nom du conférencier]
INNER JOIN SFC ON Hôtes.Hôtes = SFC.Hôtes
INNER JOIN [Niveau d'épingle] ON [Coordonnées des conférenciers].[Niveau
d'épingle] = [Niveau d'épingle].Niveau
WHERE SFC.Nom du conférencier NOT IN
(SELECT SFC.Nom du conférencier
FROM SFC
WHERE SFC.Date>=#2/1/2004# And SFC.Date<#12/31/2004#
AND Not SFC.Région="Québec"
AND [Niveau d'épingle].Priorité)>=7);

Il manquait un FROM SFC dans ta requête : SFC.Nom du conférencier NOT IN ...

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Marijo" wrote in message
news:
Bonjour Éric,

Je te remercie pour ton aide précieuse. J'ai un peu de mal à tout
déchiffrer

en mode SQL. Access me dit toujours qu'il y a erreur de syntaxe. Voici mes
codes SQL, peux-tu m'aider à trouver l'erreur?

SELECT SFC.[SFC de], SFC.Date, SFC.Région, SFC.[Nom du conférencier],
[Coordonnées des conférenciers].Langue, [Niveau d'épingle].Niveau, [Niveau
d'épingle].Priorité, SFC.Hôtes, SFC.Emplacement, SFC.Commentaires
FROM ([Coordonnées des conférenciers] INNER JOIN (Hôtes INNER JOIN SFC ON
Hôtes.Hôtes = SFC.Hôtes) ON [Coordonnées des conférenciers].[Nom du
conférencier] = SFC.[Nom du conférencier]) INNER JOIN [Niveau d'épingle]
ON

[Coordonnées des conférenciers].[Niveau d'épingle] = [Niveau
d'épingle].Niveau

WHERE (((SFC.Nom du conférencier) Not In (select (SFC.Nom du conférencier)
WHERE (((SFC.Date)>=#2/1/2004# And (SFC.Date)<#12/31/2004#) AND (Not
(SFC.Région)="Québec") AND (([Niveau d'épingle].Priorité)>=7)));


....

Voir mes posts ci-dessous, dans le même fil, en réponse à ta question.

A+
Eric

=?Utf-8?B?TWFyaWpv?= écrivait
news::

C'est exactement ce qui se produit. Pourtant, ce que j'aimerais faire
c'est pouvoir établir rapidement des listes de conférenciers qui
n'ont pas parlé dans une région donnée depuis 12 mois.

Telle que montée, ma requête ne me donne pas le bon résultat. Il
faudrait que je puisse dire à Access de me donner le nom des
conférenciers seulement si ils n'apparaissent pas en union avec la
région "Québec" et c'est cette syntaxe que je ne réussis pas Ã
élaborer.

"Eric" wrote:

Bonjour Philippe,

A mon avis ce n'est pas suffisant.
Supposons que nous ayons un conférencier qui a participé sur
l'année à une conférence au Québec et une autre en France. Soit A
cette personne, (NumConf 1). Tu auras donc 2 enregistrements : un
pour le Québec et un pour la conférence en France.
Donc le requête retournera quand même le conférencier A pour
l'enregistrement relatif à la région France.

Mais je me trompe peut-être ?

A+
Eric

"Philippe T [MS]" écrivait
news::

Il faut ajouter : et Région pas "Québec" sur la même ligne !!!

Phil.
________________________________________________________
Philippe TROTIN
http://blogs.msdn.com/ptrotin Microsoft Services France
http://www.microsoft.com/france