OVH Cloud OVH Cloud

Requête

9 réponses
Avatar
Philippe
Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de lot de
mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un autre,
dans une requête je voudrais reprendre sur une ligne la date d'entrée et la
date de sortie qui correspond à la date d'entrée du changement vous avez une
idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le 10/01/07 lot
Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et extraire la
ligne juste en dessous.

J'espére que ma question est claire.

9 réponses

Avatar
Ilan
Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de lot de
mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un autre,
dans une requête je voudrais reprendre sur une ligne la date d'entrée et la
date de sortie qui correspond à la date d'entrée du changement vous avez une
idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le 10/01/07 lot
Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et extraire la
ligne juste en dessous.

J'espére que ma question est claire.


Avatar
Philippe
Bonjour,
Merci pour ta réponse, tu fais comment pour créer cette requête SQL ?
Merci d'avance
Philippe


Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de lot de
mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un autre,
dans une requête je voudrais reprendre sur une ligne la date d'entrée et la
date de sortie qui correspond à la date d'entrée du changement vous avez une
idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le 10/01/07 lot
Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et extraire la
ligne juste en dessous.

J'espére que ma question est claire.




Avatar
Tisane
Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL ?


Tu crées une nouvelle requête sans sélectionner de tables et tu cliques sur
le bouton [SQL], le 1er à gauche de ta barre d'outils (ou menu Affichage |
Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms de tes
tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un
autre, dans une requête je voudrais reprendre sur une ligne la date
d'entrée et la date de sortie qui correspond à la date d'entrée du
changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.






Avatar
Philippe
Bonsoir Tisane,

Je n'ai qu'une table qui contient les données table "LOT"
Comment je dois faire, la mettre deux fois dans l'editeur de requête et la
liéer avec sa soeur ?


Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL ?


Tu crées une nouvelle requête sans sélectionner de tables et tu cliques sur
le bouton [SQL], le 1er à gauche de ta barre d'outils (ou menu Affichage |
Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms de tes
tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un
autre, dans une requête je voudrais reprendre sur une ligne la date
d'entrée et la date de sortie qui correspond à la date d'entrée du
changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.











Avatar
Philippe
Tisane,

Tu peux me donner les noms de champs de la table ou des tables et le type de
jointure, je ne comprend pas, ou m'envoyer un exemple ?

Merci d'avance.


Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL ?


Tu crées une nouvelle requête sans sélectionner de tables et tu cliques sur
le bouton [SQL], le 1er à gauche de ta barre d'outils (ou menu Affichage |
Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms de tes
tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un
autre, dans une requête je voudrais reprendre sur une ligne la date
d'entrée et la date de sortie qui correspond à la date d'entrée du
changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.











Avatar
Philippe
Aprés avoir collé le code j'ai un message d'erreur : "Erreur de syntaxe dans
la clause FROM" et le mot "TABLE" est sélectionné.


Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL ?


Tu crées une nouvelle requête sans sélectionner de tables et tu cliques sur
le bouton [SQL], le 1er à gauche de ta barre d'outils (ou menu Affichage |
Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms de tes
tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée], ENTREE.NomLot,
FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans un
autre, dans une requête je voudrais reprendre sur une ligne la date
d'entrée et la date de sortie qui correspond à la date d'entrée du
changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.











Avatar
Tisane
Aprés avoir collé le code j'ai un message d'erreur : "Erreur de
syntaxe dans la clause FROM" et le mot "TABLE" est sélectionné.


Je ne venais que pour te donner l'explication sur l'accès à la fenêtre
SQL... et me voilà partie à décortiquer ton problème.
Bon, puisqu'Ilan a pris son dimanche...

Le mieux est que je te montre en image comment j'ai (vite) fait (j'attends
des retours de bâton d'Ilan et des autres du "club" ;-))
http://cjoint.com/?bovkzjgUhe

Attention : tu crées d'abord ta requête comme indiquée sur la photo d'écran
(oui, la table est "dupliquée").
Puis, en dernier, tu vas dans le SQL et tu remplaces le signe = entre les
dates par le signe < (j'ai entouré en rouge).
Tu ne pourras plus basculer dans le requêteur classique mais tu pourras
afficher le résultat et modifier le code si nécessaire (ou remettre le = si
tu es plus à l'aide avec la grille, le temps de modifier).

Le résultat est le même que celui d'Ilan et j'espère que c'est ce que tu
veux ;-)

A demain peut-être...

--
Tisane


Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL
?


Tu crées une nouvelle requête sans sélectionner de tables et tu
cliques sur le bouton [SQL], le 1er à gauche de ta barre d'outils
(ou menu Affichage | Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms
de tes tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée],
ENTREE.NomLot, FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans
un autre, dans une requête je voudrais reprendre sur une ligne la
date d'entrée et la date de sortie qui correspond à la date
d'entrée du changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.










Avatar
Philippe
Bonsoir Tisane,

Un trés grand merci, apparement ça fonctionne, toutefois pour repartir en
mode création il faut que je repasse en SQL et remettre le signe égal c'est
normal ?
A bientôt.
Philippe.

Aprés avoir collé le code j'ai un message d'erreur : "Erreur de
syntaxe dans la clause FROM" et le mot "TABLE" est sélectionné.


Je ne venais que pour te donner l'explication sur l'accès à la fenêtre
SQL... et me voilà partie à décortiquer ton problème.
Bon, puisqu'Ilan a pris son dimanche...

Le mieux est que je te montre en image comment j'ai (vite) fait (j'attends
des retours de bâton d'Ilan et des autres du "club" ;-))
http://cjoint.com/?bovkzjgUhe

Attention : tu crées d'abord ta requête comme indiquée sur la photo d'écran
(oui, la table est "dupliquée").
Puis, en dernier, tu vas dans le SQL et tu remplaces le signe = entre les
dates par le signe < (j'ai entouré en rouge).
Tu ne pourras plus basculer dans le requêteur classique mais tu pourras
afficher le résultat et modifier le code si nécessaire (ou remettre le = si
tu es plus à l'aide avec la grille, le temps de modifier).

Le résultat est le même que celui d'Ilan et j'espère que c'est ce que tu
veux ;-)

A demain peut-être...

--
Tisane


Bonjour Philippe,

Merci pour ta réponse, tu fais comment pour créer cette requête SQL
?


Tu crées une nouvelle requête sans sélectionner de tables et tu
cliques sur le bouton [SQL], le 1er à gauche de ta barre d'outils
(ou menu Affichage | Mode SQL).
Tu colles le code d'Ilan, peut-être à adapter en fonction des noms
de tes tables et champs (je n'ai pas suivi le fil).
Tu peux repasser ensuite en Mode Création pour revenir au requêteur
"normal".

--
Tisane



Bonjour Philippe, essai cette requête :

SELECT ENTREE.Numero, ENTREE.DateLot AS [Date Entrée],
ENTREE.NomLot, FIRST(SORTIE.DateLot) AS [Date Sortie] FROM
TABLE AS ENTREE LEFT JOIN TABLE AS SORTIE ON
ENTREE.Numero=Sortie.Numero AND ENTREE.DateLot<SORTIE.DateLot
GROUP BY ENTREE.Numero, ENTREE.DateLot, ENTREE.Lot;

Avec les données de ton exemple j'obtiens ceci
Numéro Date Entrée Nom lot Date Sortie
5236 01/01/07 monlot 10/01/2007
5236 10/01/07 lot Essai 20/01/2007
5236 20/01/07 Nouveau lot




Bonjour à tous,

Je suis éleveur de bovin, dans une table je gére les mouvements de
lot de mes animaux.

Numéro Date lot Nom lot
5236 01/01/07 monlot

Lorsque les animaux sortent d'un lot ils rentrent forcement dans
un autre, dans une requête je voudrais reprendre sur une ligne la
date d'entrée et la date de sortie qui correspond à la date
d'entrée du changement vous avez une idée ?

Numéro Date lot Nom lot
5236 01/01/07 monlot = date entrée
5236 10/01/07 lot Essai = date de sortie
5236 20/01/07 Nouveau lot = date entrée
etc....

donc pour cet animal LOT : monlot entrée le 01/01/07 sortie le
10/01/07 lot Essai
Avec Max ou dernier ça ne fonctionne pas car il faut lire et
extraire la ligne juste en dessous.

J'espére que ma question est claire.















Avatar
Tisane
Bonjour Philippe,

Un trés grand merci, apparement ça fonctionne, toutefois pour
repartir en mode création il faut que je repasse en SQL et remettre
le signe égal c'est normal ?


C'est ce que je t'ai mis comme réserve dans mon message précédent.
Il y a un certain nombre de requêtes qu'Access ne sait pas représenter dans
le requêteur. C'est le cas des requêtes Union par exemple.
Il ne faut pas oublier que le requêteur n'est là que pour nous faciliter les
choses.
Autrement dit, ce n'est pas le mode que retient Access. Lui, il utilise le
SQL qui est généré "derrière".

Pour ton exemple, je n'ai pas cherché s'il y avait un autre moyen.
Mais une fois que ta requête sera finalisée, normalement, tu n'auras plus à
y toucher.
Et puis, c'est un bon moyen d'apprendre le SQL peut-être ;-))

--
Tisane


Aprés avoir collé le code j'ai un message d'erreur : "Erreur de
syntaxe dans la clause FROM" et le mot "TABLE" est sélectionné.


Je ne venais que pour te donner l'explication sur l'accès à la
fenêtre SQL... et me voilà partie à décortiquer ton problème.
Bon, puisqu'Ilan a pris son dimanche...

Le mieux est que je te montre en image comment j'ai (vite) fait
(j'attends des retours de bâton d'Ilan et des autres du "club" ;-))
http://cjoint.com/?bovkzjgUhe

Attention : tu crées d'abord ta requête comme indiquée sur la photo
d'écran (oui, la table est "dupliquée").
Puis, en dernier, tu vas dans le SQL et tu remplaces le signe >> entre les dates par le signe < (j'ai entouré en rouge).
Tu ne pourras plus basculer dans le requêteur classique mais tu
pourras afficher le résultat et modifier le code si nécessaire (ou
remettre le = si tu es plus à l'aide avec la grille, le temps de
modifier).

Le résultat est le même que celui d'Ilan et j'espère que c'est ce
que tu veux ;-)

A demain peut-être...

--
Tisane
[...]