Je ne parviens pas à trouver un moyen de récupérer un enregistrement se
basant sur une plage de dates. C'est du SQL sur HF, mais si quelqu'un
aurait une solution pour une autre base, je peux éventuellement
l'adapter.
// Description fichier A
fichierA.Date
fichierA.CléFichierB
// Description fichier B: les valeurs de la rubriqueCherchée changent de
temps en temps
// et sont enregistrés sous la date du jour. Il n'y a donc pas de
liaison
// directe entre A.Date et B.Date
fichierB.Clé
fichierB.Date
fichierB.RubriqueCherchée
// il faut trouver la rubriqueCherchée de B avec une date égale ou
//inférieure de A.Date
SELECT A.Date, B.Clé, B.RubriqueCherchée
// ceci ne marche pas
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé AND B.Date <= A.Date)
// ceci ne marche non plus
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé)
AND A.date >= (select bottom 1 B.DATE from B WHERE B.Clé = A.CléFichierB
AND B.Date <= A.date)
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
mat
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé A.CléFichierB AND B.Date <= A.date)
petite correction, l'exemple n'étant pas une copie complète de ma
requête:
// ceci ne marche non plus
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé)
WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé A.CléFichierB AND B.Date <= A.date)
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé A.CléFichierB AND B.Date <= A.date)
Roumegou Eric
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé > A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma
requête:
// ceci ne marche non plus
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé)
WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé > A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais
Select fichierB.RubriqueCherchée
from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle
where fichierB.Date <= fichierA.Date
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé > A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
mat
Roumegou Eric wrote:
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En effet, j'aurais du préciser d'avantage: Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée from A, B where A.CléFichierB = B.Clé and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec la vraie date de l'enregistrement, donc la liaison n'est pas bonne. En plus, je n'étais pas assez précis dans mon premier message: je ne veux que la valeur du premier enregistrement du fichier B ayant une date égale ou inférieure à celle du fichier A.
En somme, je voudrais que dans la situation suivante
la requête me retourne 1.20 pour l'enregistrement 1 du fichier A et 1.15 pour l'enregistrement 2.
J'espère que c'est plus claire maintenant.
Merci et salutations mat
Roumegou Eric wrote:
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma
requête:
// ceci ne marche non plus
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé)
WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais
Select fichierB.RubriqueCherchée
from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle
where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En
effet, j'aurais du préciser d'avantage:
Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée
from A, B
where A.CléFichierB = B.Clé
and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec
la vraie date de l'enregistrement, donc la liaison n'est pas bonne. En
plus, je n'étais pas assez précis dans mon premier message: je ne veux
que la valeur du premier enregistrement du fichier B ayant une date
égale ou inférieure à celle du fichier A.
En somme, je voudrais que dans la situation suivante
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En effet, j'aurais du préciser d'avantage: Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée from A, B where A.CléFichierB = B.Clé and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec la vraie date de l'enregistrement, donc la liaison n'est pas bonne. En plus, je n'étais pas assez précis dans mon premier message: je ne veux que la valeur du premier enregistrement du fichier B ayant une date égale ou inférieure à celle du fichier A.
En somme, je voudrais que dans la situation suivante
la requête me retourne 1.20 pour l'enregistrement 1 du fichier A et 1.15 pour l'enregistrement 2.
J'espère que c'est plus claire maintenant.
Merci et salutations mat
Roumegou Eric
mat a écrit :
Roumegou Eric wrote:
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >>> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En effet, j'aurais du préciser d'avantage: Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée from A, B where A.CléFichierB = B.Clé and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec la vraie date de l'enregistrement, donc la liaison n'est pas bonne.
très inquiétant si la liaison n'est pas bonne ??? meme en HF le inner join doit marcher non ? Ta syntaxe correspondrait plus à une jointure oracle (pre 9i, car le inner join est possible depuis la 9)
En plus, je n'étais pas assez précis dans mon premier message: je ne veux que la valeur du premier enregistrement du fichier B ayant une date égale ou inférieure à celle du fichier A.
Ah ? alors en mysql un limit 1 et un order by, ça le ferait ... mais en HF, je sais pas, jamais mis mon nez :')
En somme, je voudrais que dans la situation suivante
la requête me retourne 1.20 pour l'enregistrement 1 du fichier A et 1.15 pour l'enregistrement 2.
J'espère que c'est plus claire maintenant.
Merci et salutations mat
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
mat a écrit :
Roumegou Eric wrote:
mat a couché sur son écran :
petite correction, l'exemple n'étant pas une copie complète de ma
requête:
// ceci ne marche non plus
FROM A INNER JOIN B ON (A.CléFichierB = B.Clé)
WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >>> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais
Select fichierB.RubriqueCherchée
from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle
where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En effet,
j'aurais du préciser d'avantage:
Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée
from A, B
where A.CléFichierB = B.Clé
and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec
la vraie date de l'enregistrement, donc la liaison n'est pas bonne.
très inquiétant si la liaison n'est pas bonne ???
meme en HF le inner join doit marcher non ?
Ta syntaxe correspondrait plus à une jointure oracle (pre 9i, car le
inner join est possible depuis la 9)
En plus, je n'étais pas assez précis dans mon premier message: je ne veux
que la valeur du premier enregistrement du fichier B ayant une date
égale ou inférieure à celle du fichier A.
Ah ? alors en mysql un limit 1 et un order by, ça le ferait ... mais en
HF, je sais pas, jamais mis mon nez :')
En somme, je voudrais que dans la situation suivante
petite correction, l'exemple n'étant pas une copie complète de ma requête:
// ceci ne marche non plus FROM A INNER JOIN B ON (A.CléFichierB = B.Clé) WHERE A.date >= (select bottom 1 B.DATE from B WHERE B.Clé >>> A.CléFichierB AND B.Date <= A.date)
pas sur d'avoir tout compris mais je mettrais Select fichierB.RubriqueCherchée from fichierA inner join FichierB on FichierA.CleFichierB=FichierB.cle where fichierB.Date <= fichierA.Date
Merci Eric, malheureusement ça ne me donne pas le résultat voulu. En effet, j'aurais du préciser d'avantage: Voici ma réponse sur la ML sur une solution similaire:
En HF ça donne
select A.CléFichierB, A.Date, B.Clé, B.date, B.RubriqueCherchée from A, B where A.CléFichierB = B.Clé and A.date >= B.date
ça passe, mais la date retourné pour le fichier A n'a rien à voir avec la vraie date de l'enregistrement, donc la liaison n'est pas bonne.
très inquiétant si la liaison n'est pas bonne ??? meme en HF le inner join doit marcher non ? Ta syntaxe correspondrait plus à une jointure oracle (pre 9i, car le inner join est possible depuis la 9)
En plus, je n'étais pas assez précis dans mon premier message: je ne veux que la valeur du premier enregistrement du fichier B ayant une date égale ou inférieure à celle du fichier A.
Ah ? alors en mysql un limit 1 et un order by, ça le ferait ... mais en HF, je sais pas, jamais mis mon nez :')
En somme, je voudrais que dans la situation suivante