OF OP autres champs
1 10
1 50
1 20
2 5
2 10
2 100
2 45
5 50
5 100
3 10
La cle praire est OF / OP.
Je dois r=E9cup=E9rer le champ OP pr=E9c=E9dent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT
1 10 NULL
1 50 10
1 20 20
2 5 NULL
2 10 5
2 100 10
2 45 45
5 50 NULL
5 100 50
3 10 NULL
Par un curseur, je sais faire mais un post pr=E9c=E9dent m'a d=E9montr=E9
qu'en maitrisant le langage sql on pouvait faire beaucoup de choses
sans curseur et avec une meilleure efficacit=E9.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Med Bouchenafa
Toute la difficulté est de savoir ce que tu entends par "précédent" SQL n'a pas d'ordre prédefini autre que par la clause ORDER BY Tu peux t'inspirer la requête suivante. SELECT B.OF, B.OP , PRECEDENT=(SELECT MAX(A.OP) FROM tblTest A WHERE B.OP>A.OP AND A.OF=B.OF) FROM tblTest B Elle n'utilise certes pas pas le mot CURSOR, mais elle effectue un traitement en cursor il faut travailler la clause WHERE de la table A pour specifier plus précisement le "précedent"
-- Bien cordialement Med Bouchenafa
"pat" a écrit dans le message de news:
Bonjour,
J'ai une table
OF OP autres champs 1 10 1 50 1 20 2 5 2 10 2 100 2 45 5 50 5 100 3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT 1 10 NULL 1 50 10 1 20 20 2 5 NULL 2 10 5 2 100 10 2 45 45 5 50 NULL 5 100 50 3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré qu'en maitrisant le langage sql on pouvait faire beaucoup de choses sans curseur et avec une meilleure efficacité.
A votre bon coeur!
Toute la difficulté est de savoir ce que tu entends par "précédent"
SQL n'a pas d'ordre prédefini autre que par la clause ORDER BY
Tu peux t'inspirer la requête suivante.
SELECT B.OF, B.OP , PRECEDENT=(SELECT MAX(A.OP) FROM tblTest A WHERE
B.OP>A.OP AND A.OF=B.OF)
FROM tblTest B
Elle n'utilise certes pas pas le mot CURSOR, mais elle effectue un
traitement en cursor
il faut travailler la clause WHERE de la table A pour specifier plus
précisement le "précedent"
--
Bien cordialement
Med Bouchenafa
"pat" <patrice.leduc@tele2.fr> a écrit dans le message de news:
1116523190.783795.183130@f14g2000cwb.googlegroups.com...
Bonjour,
J'ai une table
OF OP autres champs
1 10
1 50
1 20
2 5
2 10
2 100
2 45
5 50
5 100
3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT
1 10 NULL
1 50 10
1 20 20
2 5 NULL
2 10 5
2 100 10
2 45 45
5 50 NULL
5 100 50
3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré
qu'en maitrisant le langage sql on pouvait faire beaucoup de choses
sans curseur et avec une meilleure efficacité.
Toute la difficulté est de savoir ce que tu entends par "précédent" SQL n'a pas d'ordre prédefini autre que par la clause ORDER BY Tu peux t'inspirer la requête suivante. SELECT B.OF, B.OP , PRECEDENT=(SELECT MAX(A.OP) FROM tblTest A WHERE B.OP>A.OP AND A.OF=B.OF) FROM tblTest B Elle n'utilise certes pas pas le mot CURSOR, mais elle effectue un traitement en cursor il faut travailler la clause WHERE de la table A pour specifier plus précisement le "précedent"
-- Bien cordialement Med Bouchenafa
"pat" a écrit dans le message de news:
Bonjour,
J'ai une table
OF OP autres champs 1 10 1 50 1 20 2 5 2 10 2 100 2 45 5 50 5 100 3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT 1 10 NULL 1 50 10 1 20 20 2 5 NULL 2 10 5 2 100 10 2 45 45 5 50 NULL 5 100 50 3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré qu'en maitrisant le langage sql on pouvait faire beaucoup de choses sans curseur et avec une meilleure efficacité.
A votre bon coeur!
Fred BROUARD
SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) FROM tblTest T
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
pat a écrit:
Bonjour,
J'ai une table
OF OP autres champs 1 10 1 50 1 20 2 5 2 10 2 100 2 45 5 50 5 100 3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT 1 10 NULL 1 50 10 1 20 20 2 5 NULL 2 10 5 2 100 10 2 45 45 5 50 NULL 5 100 50 3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré qu'en maitrisant le langage sql on pouvait faire beaucoup de choses sans curseur et avec une meilleure efficacité.
A votre bon coeur!
SELECT OF, OP, (SELECT MAX(OP)
FROM tblTest
WHERE OP < T.OP
AND OF = T.OF)
FROM tblTest T
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
pat a écrit:
Bonjour,
J'ai une table
OF OP autres champs
1 10
1 50
1 20
2 5
2 10
2 100
2 45
5 50
5 100
3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT
1 10 NULL
1 50 10
1 20 20
2 5 NULL
2 10 5
2 100 10
2 45 45
5 50 NULL
5 100 50
3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré
qu'en maitrisant le langage sql on pouvait faire beaucoup de choses
sans curseur et avec une meilleure efficacité.
SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) FROM tblTest T
A +
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ************************ www.datasapiens.com *************************
pat a écrit:
Bonjour,
J'ai une table
OF OP autres champs 1 10 1 50 1 20 2 5 2 10 2 100 2 45 5 50 5 100 3 10
La cle praire est OF / OP.
Je dois récupérer le champ OP précédent pour chaque couple OF/OP.
Ce qui donnerait :
OF OP autres champs OP PRECEDENT 1 10 NULL 1 50 10 1 20 20 2 5 NULL 2 10 5 2 100 10 2 45 45 5 50 NULL 5 100 50 3 10 NULL
Par un curseur, je sais faire mais un post précédent m'a démontré qu'en maitrisant le langage sql on pouvait faire beaucoup de choses sans curseur et avec une meilleure efficacité.
A votre bon coeur!
pat
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent= SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
C'est exactement le résultat voulu mais je n'arrive toujours pas à me
sortir de l'update.
Il doit falloir utiliser la notion requête correlée mais je suis
complétement perdue dans la syntaxe.
update tbltest
set op_precedent=
SELECT OF, OP, (SELECT MAX(OP)
FROM tblTest
WHERE OP < T.OP
AND OF = T.OF) as op_precedent
FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent= SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
Dominique
update tbltest set op_precedent=(SELECT MAX(T.OP) FROM tblTest as T WHERE T.OP < tbltest.OP AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent > SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
update tbltest
set op_precedent=(SELECT MAX(T.OP)
FROM tblTest as T
WHERE T.OP < tbltest.OP
AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me
sortir de l'update.
Il doit falloir utiliser la notion requête correlée mais je suis
complétement perdue dans la syntaxe.
update tbltest
set op_precedent > SELECT OF, OP, (SELECT MAX(OP)
FROM tblTest
WHERE OP < T.OP
AND OF = T.OF) as op_precedent
FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
update tbltest set op_precedent=(SELECT MAX(T.OP) FROM tblTest as T WHERE T.OP < tbltest.OP AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent > SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
Dominique
update tbltest set op_precedent=(SELECT MAX(T.OP) FROM tblTest as T WHERE T.OP < tbltest.OP AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent > SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
update tbltest
set op_precedent=(SELECT MAX(T.OP)
FROM tblTest as T
WHERE T.OP < tbltest.OP
AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me
sortir de l'update.
Il doit falloir utiliser la notion requête correlée mais je suis
complétement perdue dans la syntaxe.
update tbltest
set op_precedent > SELECT OF, OP, (SELECT MAX(OP)
FROM tblTest
WHERE OP < T.OP
AND OF = T.OF) as op_precedent
FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute
update tbltest set op_precedent=(SELECT MAX(T.OP) FROM tblTest as T WHERE T.OP < tbltest.OP AND T.OF = tbltest.OF)
pat a écrit :
C'est exactement le résultat voulu mais je n'arrive toujours pas à me sortir de l'update. Il doit falloir utiliser la notion requête correlée mais je suis complétement perdue dans la syntaxe.
update tbltest set op_precedent > SELECT OF, OP, (SELECT MAX(OP) FROM tblTest WHERE OP < T.OP AND OF = T.OF) as op_precedent FROM tblTest T
Au secours ! j'aimerais tellement comprendre une bonne fois pour toute