Bonjour,
Une auto jointure avec condition sur la table stock par exemple:
Enfin je pense que c'est ca ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT T1.ID,T1.MAT,T1.NOM,T1.PRENOM,T1.DATE,T1.HEURE,T1.TYPE_MVT,T2.ID,T2.MAT,T2.NOM,T2.PRENOM,T2.DATE,T2.HEURE,T2.TYPE_MVT FROM STOCK T1 INNER JOIN STOCK T2 ON T1.ID=T2.ID WHERE T1.TYPE_MVT=T2.TYPE_MVT AND T1.DATE=T2.DATE AND T1.TYPE_MVT=T2.TYPE_MVT
Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.
Lao Tseu - un sage chinois
Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.
Friedrich Nietzsche - Par délà le bien et le mal
Salut
Je verrais plus une jointure uniquement sur le Matricule et la Date:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT T1.ID, T1.MAT, T1.NOM, T1.PRENOM, T1.DATE, T1.HEURE, T1.TYPE_MVT, T2.ID, T2.MAT, T2.NOM, T2.PRENOM, T2.DATE, T2.HEURE, T2.TYPE_MVT FROM STOCK T1 INNER JOIN STOCK T2 ON T1.MAT = T2.MAT AND T1.DATE = T2.DATE;
@+ Claudius
En complément de cette requete
je rajouterais bien quelque chose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT T1.ID, T1.MAT, T1.NOM, T1.PRENOM, T1.DATE, T1.HEURE, T1.TYPE_MVT, T2.ID, T2.MAT, T2.NOM, T2.PRENOM, T2.DATE, T2.HEURE, T2.TYPE_MVT FROM STOCK T1 INNER JOIN STOCK T2 ON T1.MAT = T2.MAT AND T1.DATE = T2.DATE;
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND T2.ID>T1.ID
Bonjour
j ai oublié de vous préciser une petite contrainte : il y a le cas où une personne effectue plusieurs entrées et sorties dans une même journée alors je me demande si c est faisable pour que chaque entrée lui correspond sa sortie
Tu peux éventuellement le faire en deux requêtes successives avec génération d'une table temporaire entre les deux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT DISTINCT d.ID, MIN(d1.ID) as Id1 FROM "TABLE1.db" d, "TABLE1.db" d1 WHERE (d.TYPE_MVT = 'Entry') AND (d1.ID > d.ID) AND (d1.MAT = d.MAT) AND (d1."DATE" = d."DATE") GROUP BY d.ID ORDER BY d.ID
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DISTINCT d1.ID, d1.MAT, d1."DATE", d1.HEURE, d2.ID, d2.MAT, d2.HEURE FROM "TMP1.DB" D, "TABLE1.db" d1, "TABLE1.db" d2 WHERE (d1.ID = D.ID) AND (d2.ID = D.Id1) ORDER BY d1.ID, d1.MAT, d1."DATE", d1.HEURE, d2.ID, d2.MAT, d2.HEURE
Merci pour toutes les réponses
je vais les essayer et je vous confirmerai le résultat
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager