J'ai un fichier INDEX
IDINDEX est la clé primaire ( UNIQUE )
DateValeur est une date
DateSystem est une date
ValeurIndex est un monétaire
IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX
(1/1)
IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur +
DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi
que 1 valeur au 31/01/2003 ( 102.75 )
Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi
que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour
un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur (
prendre le record dont la DateSystem est la plus grande ).
En gros,
pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3
pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ?
Merci d'avance.
Avec mes meilleures salutations
M P I S A
Management de Projets Informatiques
Solutions et gestion pour la Prévoyance Institutionnelle
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
Roumegou
"Jean Cherche" a utilisé son clavier pour écrire :
Bonjour,
J'ai un fichier INDEX IDINDEX est la clé primaire ( UNIQUE ) DateValeur est une date DateSystem est une date ValeurIndex est un monétaire IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX (1/1) IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur + DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi que 1 valeur au 31/01/2003 ( 102.75 ) Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur ( prendre le record dont la DateSystem est la plus grande ).
Oulah, j'ai déjà cherché ce type de requête pour finir par une solution programmée. car un SELECT Test1.IDINDICE, Test1.DateValeur, First(Test1.IDINDEX) AS PremierDeIDINDEX FROM Test1 GROUP BY Test1.IDINDICE, Test1.DateValeur
D'abord je ne sais pas si ton moteur SQL l'acceptera; et ensuite il n'est pas possible de trier sur DateSysteme si cela ne fait pas partie de ton agrégat. Donc le plus simple, c'est de prendre tous les enreg et d'agir par rupture
Ou d'essayer une requête imbriquée.
En gros, pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3 pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ? Merci d'avance.
Avec mes meilleures salutations
M P I S A Management de Projets Informatiques Solutions et gestion pour la Prévoyance Institutionnelle
@@@@@@@@@@@@@@@@@@@@@@@@ NEW : notre site a changé, visitez-le : www.mpisa.ch @@@@@@@@@@@@@@@@@@@@@@@@
-- Eric Roumegou http://cerbermail.com/?Wk2D8D62KI (cliquez sur le lien ci-dessus pour me contacter en privé)
"Jean Cherche" a utilisé son clavier pour écrire :
Bonjour,
J'ai un fichier INDEX
IDINDEX est la clé primaire ( UNIQUE )
DateValeur est une date
DateSystem est une date
ValeurIndex est un monétaire
IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX
(1/1)
IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur +
DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi
que 1 valeur au 31/01/2003 ( 102.75 )
Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi
que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour
un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur (
prendre le record dont la DateSystem est la plus grande ).
Oulah, j'ai déjà cherché ce type de requête pour finir par une solution
programmée.
car un SELECT Test1.IDINDICE, Test1.DateValeur, First(Test1.IDINDEX) AS
PremierDeIDINDEX
FROM Test1
GROUP BY Test1.IDINDICE, Test1.DateValeur
D'abord je ne sais pas si ton moteur SQL l'acceptera; et ensuite il
n'est pas possible de trier sur DateSysteme si cela ne fait pas partie
de ton agrégat.
Donc le plus simple, c'est de prendre tous les enreg et d'agir par
rupture
Ou d'essayer une requête imbriquée.
En gros,
pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3
pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ?
Merci d'avance.
Avec mes meilleures salutations
M P I S A
Management de Projets Informatiques
Solutions et gestion pour la Prévoyance Institutionnelle
"Jean Cherche" a utilisé son clavier pour écrire :
Bonjour,
J'ai un fichier INDEX IDINDEX est la clé primaire ( UNIQUE ) DateValeur est une date DateSystem est une date ValeurIndex est un monétaire IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX (1/1) IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur + DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi que 1 valeur au 31/01/2003 ( 102.75 ) Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur ( prendre le record dont la DateSystem est la plus grande ).
Oulah, j'ai déjà cherché ce type de requête pour finir par une solution programmée. car un SELECT Test1.IDINDICE, Test1.DateValeur, First(Test1.IDINDEX) AS PremierDeIDINDEX FROM Test1 GROUP BY Test1.IDINDICE, Test1.DateValeur
D'abord je ne sais pas si ton moteur SQL l'acceptera; et ensuite il n'est pas possible de trier sur DateSysteme si cela ne fait pas partie de ton agrégat. Donc le plus simple, c'est de prendre tous les enreg et d'agir par rupture
Ou d'essayer une requête imbriquée.
En gros, pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3 pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ? Merci d'avance.
Avec mes meilleures salutations
M P I S A Management de Projets Informatiques Solutions et gestion pour la Prévoyance Institutionnelle
@@@@@@@@@@@@@@@@@@@@@@@@ NEW : notre site a changé, visitez-le : www.mpisa.ch @@@@@@@@@@@@@@@@@@@@@@@@
-- Eric Roumegou http://cerbermail.com/?Wk2D8D62KI (cliquez sur le lien ci-dessus pour me contacter en privé)
treu
J'AI LA REPONSE ...
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX1 ) SELECT INDEX.IDINDICE AS IDINDICE, INDEX.DateValeur AS DateValeur, MAX(INDEX.DateSysteme) AS MaxDateSysteme FROM INDEX WHERE IDINDICE = {peIdIndice} AND DATEVALEUR = {pdDateValeur} GROUP BY IDINDICE, DateValeur
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX2 ) SELECT A.IDINDEX, A.CodeInTProvenanceCours, A.DateValeur AS DATEVALEURXX, A.Index, A.DateSysteme, A.HeureSysteme, A.IDINDICE AS INDICEXX FROM INDEX A INNER JOIN RQS_TEST_INDEX1 B ON A.IDINDICE = B.IDINDICE AND A.DATEVALEUR = B.DATEVALEUR AND A.DATESYSTEME = B.MAXDATESYSTEME ORDER BY INDICEXX, DATEVALEURXX
FAIRE : RQS_TEST_INDEX1.peIdIndice = 58 RQS_TEST_INDEX1.pdDateValeur = Null
REMARQUES : Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000 ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF, etc... ) De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et A.IDINDICE dans la clause ORDER BY !!!!!
Jean Chieeeeeee
(Jean Cherche) wrote in message news:...
Bonjour,
J'ai un fichier INDEX IDINDEX est la clé primaire ( UNIQUE ) DateValeur est une date DateSystem est une date ValeurIndex est un monétaire IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX (1/1) IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur + DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi que 1 valeur au 31/01/2003 ( 102.75 ) Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur ( prendre le record dont la DateSystem est la plus grande ).
En gros, pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3 pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ? Merci d'avance.
Avec mes meilleures salutations
M P I S A Management de Projets Informatiques Solutions et gestion pour la Prévoyance Institutionnelle
@@@@@@@@@@@@@@@@@@@@@@@@ NEW : notre site a changé, visitez-le : www.mpisa.ch @@@@@@@@@@@@@@@@@@@@@@@@
J'AI LA REPONSE ...
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX1 )
SELECT INDEX.IDINDICE AS IDINDICE,
INDEX.DateValeur AS DateValeur,
MAX(INDEX.DateSysteme) AS MaxDateSysteme
FROM INDEX
WHERE IDINDICE = {peIdIndice}
AND DATEVALEUR = {pdDateValeur}
GROUP BY IDINDICE, DateValeur
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX2 )
SELECT
A.IDINDEX,
A.CodeInTProvenanceCours,
A.DateValeur AS DATEVALEURXX,
A.Index,
A.DateSysteme,
A.HeureSysteme,
A.IDINDICE AS INDICEXX
FROM INDEX A
INNER JOIN RQS_TEST_INDEX1 B
ON A.IDINDICE = B.IDINDICE
AND A.DATEVALEUR = B.DATEVALEUR
AND A.DATESYSTEME = B.MAXDATESYSTEME
ORDER BY
INDICEXX,
DATEVALEURXX
FAIRE :
RQS_TEST_INDEX1.peIdIndice = 58
RQS_TEST_INDEX1.pdDateValeur = Null
REMARQUES :
Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000
ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête
avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF,
etc... )
De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et
A.IDINDICE dans la clause ORDER BY !!!!!
Jean Chieeeeeee
treu@mpisa.ch (Jean Cherche) wrote in message news:<ea9d0f1.0312110120.780cfbc5@posting.google.com>...
Bonjour,
J'ai un fichier INDEX
IDINDEX est la clé primaire ( UNIQUE )
DateValeur est une date
DateSystem est une date
ValeurIndex est un monétaire
IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX
(1/1)
IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur +
DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi
que 1 valeur au 31/01/2003 ( 102.75 )
Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi
que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour
un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur (
prendre le record dont la DateSystem est la plus grande ).
En gros,
pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3
pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ?
Merci d'avance.
Avec mes meilleures salutations
M P I S A
Management de Projets Informatiques
Solutions et gestion pour la Prévoyance Institutionnelle
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX1 ) SELECT INDEX.IDINDICE AS IDINDICE, INDEX.DateValeur AS DateValeur, MAX(INDEX.DateSysteme) AS MaxDateSysteme FROM INDEX WHERE IDINDICE = {peIdIndice} AND DATEVALEUR = {pdDateValeur} GROUP BY IDINDICE, DateValeur
SOIT LA REQUETE SUIVANTE : ( RQS_TEST_INDEX2 ) SELECT A.IDINDEX, A.CodeInTProvenanceCours, A.DateValeur AS DATEVALEURXX, A.Index, A.DateSysteme, A.HeureSysteme, A.IDINDICE AS INDICEXX FROM INDEX A INNER JOIN RQS_TEST_INDEX1 B ON A.IDINDICE = B.IDINDICE AND A.DATEVALEUR = B.DATEVALEUR AND A.DATESYSTEME = B.MAXDATESYSTEME ORDER BY INDICEXX, DATEVALEURXX
FAIRE : RQS_TEST_INDEX1.peIdIndice = 58 RQS_TEST_INDEX1.pdDateValeur = Null
REMARQUES : Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000 ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF, etc... ) De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et A.IDINDICE dans la clause ORDER BY !!!!!
Jean Chieeeeeee
(Jean Cherche) wrote in message news:...
Bonjour,
J'ai un fichier INDEX IDINDEX est la clé primaire ( UNIQUE ) DateValeur est une date DateSystem est une date ValeurIndex est un monétaire IDINDICE est une clé étrangère du fichier INDICE : INDICE (0/n) <---> INDEX (1/1) IDINDEX_CLECOMP est une clé composé ( UNIQUE ) de IDINDICE + DateValeur + DateSystem
Je peux donc avoir les records suivant dans INDEX :
Pour INDICE 58, j'ai donc 2 valeurs au 31/12/2002 ( 100.00 et 100.28 ) ainsi que 1 valeur au 31/01/2003 ( 102.75 ) Pour INDICE 62, j'ai donc 2 valeurs au 31/12/2002 ( 104.00 et 104.17 ) ainsi que 1 valeur au 31/01/2003 ( 104.56 )
Il me faudrait une requête SQL qui me donne la liste de tous les INDEX pour un indice connu MAIS en ne prenant que 1 seule valeur par DateValeur ( prendre le record dont la DateSystem est la plus grande ).
En gros, pour INDICE 58 j'aimerais le résultat suivant : record 5 et record 3 pour INDICE 62 j'aimerais le résultat suivant : record 6 et record 4
Comment faire ? Merci d'avance.
Avec mes meilleures salutations
M P I S A Management de Projets Informatiques Solutions et gestion pour la Prévoyance Institutionnelle
@@@@@@@@@@@@@@@@@@@@@@@@ NEW : notre site a changé, visitez-le : www.mpisa.ch @@@@@@@@@@@@@@@@@@@@@@@@
Roumegou
> REMARQUES : Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000 ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF, etc... ) De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et A.IDINDICE dans la clause ORDER BY !!!!!
Voilà pourquoi il faut travailler avec ces SGBD et non avec HF et en Sql Natif et pas en ordre H. Sinon dans ta liste, tu as oublié mySQL meme si tu dois attendre la 4.1 (qui est en béta) pour les sous requetes. Eric
-- Eric Roumegou http://cerbermail.com/?Wk2D8D62KI (cliquez sur le lien ci-dessus pour me contacter en privé)
> REMARQUES :
Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000
ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête
avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF,
etc... )
De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et
A.IDINDICE dans la clause ORDER BY !!!!!
Voilà pourquoi il faut travailler avec ces SGBD et non avec HF et en
Sql Natif et pas en ordre H.
Sinon dans ta liste, tu as oublié mySQL meme si tu dois attendre la 4.1
(qui est en béta) pour les sous requetes.
Eric
--
Eric Roumegou
http://cerbermail.com/?Wk2D8D62KI
(cliquez sur le lien ci-dessus pour me contacter en privé)
> REMARQUES : Sur une VRAI base de données Client/Serveur ( genre SQL Serveur 2000 ou Oracle ou DB2 ), il aurait été possible de faire ça en 1 requête avec sous-requête MAIS avec HF 7, je n'y suis pas arrivé ( erreur HF, etc... ) De plus, allez savoir pourquoi on ne peut pas mettre A.DateValeur et A.IDINDICE dans la clause ORDER BY !!!!!
Voilà pourquoi il faut travailler avec ces SGBD et non avec HF et en Sql Natif et pas en ordre H. Sinon dans ta liste, tu as oublié mySQL meme si tu dois attendre la 4.1 (qui est en béta) pour les sous requetes. Eric
-- Eric Roumegou http://cerbermail.com/?Wk2D8D62KI (cliquez sur le lien ci-dessus pour me contacter en privé)