OVH Cloud OVH Cloud

Sous-Requete

5 réponses
Avatar
Vinz
Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!

5 réponses

Avatar
Gafish
Bonjour aussi,

C'est possible très simplement avec deux requêtes
- une première requete sur ta table, tu sélectionnes ton num auquel tu
ajoutes 1, et ta lettre
- deuxième requête, dans laquelle tu ajoutes ta table et la requête créée
ci-dessus, tu fais une jointure entre le num de la table, et le num de la
requête (donc celui incrémenté de 1) et dans les propriétés de ta jointure
tu indiques tous les enregistrements de ta table et seulement ceux de ta
requête pour lesquels les champs joints sont égaux. Dans cette requête tu
selectionnes le num de la table, la lettre de la table et la lettre de la
requête.

Arnaud

"Vinz" a écrit dans le message news:

Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!


Avatar
Vinz
OK, merci.

Précision: avec une seule requête c'est possible?




Bonjour aussi,

C'est possible très simplement avec deux requêtes
- une première requete sur ta table, tu sélectionnes ton num auquel tu
ajoutes 1, et ta lettre
- deuxième requête, dans laquelle tu ajoutes ta table et la requête créée
ci-dessus, tu fais une jointure entre le num de la table, et le num de la
requête (donc celui incrémenté de 1) et dans les propriétés de ta jointure
tu indiques tous les enregistrements de ta table et seulement ceux de ta
requête pour lesquels les champs joints sont égaux. Dans cette requête tu
selectionnes le num de la table, la lettre de la table et la lettre de la
requête.

Arnaud

"Vinz" a écrit dans le message news:

Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!







Avatar
Gafish
C'est possible mais ca risque d'être beaucoup plus lourd. Mais ici tu as
deux requêtes, mais tu n'as qu'à appeler la requête2, une fois créée la
requête1 remplit son rôle sans que tu doives l'appeler aussi, c'est
transparent.
Quel est le but exactement de cette manoeuvre ?

"Vinz" a écrit dans le message news:

OK, merci.

Précision: avec une seule requête c'est possible?




Bonjour aussi,

C'est possible très simplement avec deux requêtes
- une première requete sur ta table, tu sélectionnes ton num auquel tu
ajoutes 1, et ta lettre
- deuxième requête, dans laquelle tu ajoutes ta table et la requête
créée


ci-dessus, tu fais une jointure entre le num de la table, et le num de
la


requête (donc celui incrémenté de 1) et dans les propriétés de ta
jointure


tu indiques tous les enregistrements de ta table et seulement ceux de ta
requête pour lesquels les champs joints sont égaux. Dans cette requête
tu


selectionnes le num de la table, la lettre de la table et la lettre de
la


requête.

Arnaud

"Vinz" a écrit dans le message news:

Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!









Avatar
Vinz
Pour faire des calculs actuariels.

Etant donné que je dois faire la manipulation de nombreuses fois, une seule
reqête, meme plus lourde, est préférable sinon je vais en avoir 60.

Le principe est donc de positionner, ur une même ligne, la valeur d'un jour
et celle du jour précédent.





C'est possible mais ca risque d'être beaucoup plus lourd. Mais ici tu as
deux requêtes, mais tu n'as qu'à appeler la requête2, une fois créée la
requête1 remplit son rôle sans que tu doives l'appeler aussi, c'est
transparent.
Quel est le but exactement de cette manoeuvre ?

"Vinz" a écrit dans le message news:

OK, merci.

Précision: avec une seule requête c'est possible?




Bonjour aussi,

C'est possible très simplement avec deux requêtes
- une première requete sur ta table, tu sélectionnes ton num auquel tu
ajoutes 1, et ta lettre
- deuxième requête, dans laquelle tu ajoutes ta table et la requête
créée


ci-dessus, tu fais une jointure entre le num de la table, et le num de
la


requête (donc celui incrémenté de 1) et dans les propriétés de ta
jointure


tu indiques tous les enregistrements de ta table et seulement ceux de ta
requête pour lesquels les champs joints sont égaux. Dans cette requête
tu


selectionnes le num de la table, la lettre de la table et la lettre de
la


requête.

Arnaud

"Vinz" a écrit dans le message news:

Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!














Avatar
G Roydor
la solution pourrait être de la forme :

SELECT [list_val].[num_ou_ date]+1, list_val_1.val, [list_val].[val]
FROM list_val, list_val AS list_val_1
WHERE [list_val].[num_ou_ date]+1=list_val_1.[num_ou_ date]
UNION select [list_val].[num_ou_ date], [list_val].[val], "/"
FROM list_val
WHERE [list_val].[num_ou_ date]=1
ORDER BY 1;


il faudra adapter à la suite réelle de num_ou_date (consécutif ou non)
dans le cas présent la suite est considérée consécutive => (+1)


bonne chance
GR



Vinz a écrit:
Pour faire des calculs actuariels.

Etant donné que je dois faire la manipulation de nombreuses fois, une seule
reqête, meme plus lourde, est préférable sinon je vais en avoir 60.

Le principe est donc de positionner, ur une même ligne, la valeur d'un jour
et celle du jour précédent.






C'est possible mais ca risque d'être beaucoup plus lourd. Mais ici tu as
deux requêtes, mais tu n'as qu'à appeler la requête2, une fois créée la
requête1 remplit son rôle sans que tu doives l'appeler aussi, c'est
transparent.
Quel est le but exactement de cette manoeuvre ?

"Vinz" a écrit dans le message news:


OK, merci.

Précision: avec une seule requête c'est possible?





Bonjour aussi,

C'est possible très simplement avec deux requêtes
- une première requete sur ta table, tu sélectionnes ton num auquel tu
ajoutes 1, et ta lettre
- deuxième requête, dans laquelle tu ajoutes ta table et la requête


créée


ci-dessus, tu fais une jointure entre le num de la table, et le num de


la


requête (donc celui incrémenté de 1) et dans les propriétés de ta


jointure


tu indiques tous les enregistrements de ta table et seulement ceux de ta
requête pour lesquels les champs joints sont égaux. Dans cette requête


tu


selectionnes le num de la table, la lettre de la table et la lettre de


la


requête.

Arnaud

"Vinz" a écrit dans le message news:


Comment faire une sous-requete?

Je m'explique,

J'ai une table comme ça:
1 - a
2 - b
3 - c
4 - d

je veux faire une requête qui me renvoie:

1 - a - /
2 - b - a
3 - c - b
4 - d - c

Autrement dit obtenir un décalage d'une période par rapport à la base
originale.

Merci!