Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Relation un à un

11 réponses
Avatar
Gloops
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salari=E9s, d'une m=EAme table, l=
a=20
difficult=E9 est juste que sur le listing on voudrait que le rempla=E7ant=
=20
apparaisse juste apr=E8s la personne qu'il remplace.

L'id=E9e qui me vient est de cr=E9er un champ pour l'ordre de tri, et de =

lancer une proc=E9dure, avant de sortir l'=E9tat, pour incr=E9menter =E0 =
chaque=20
enregistrement, en passant par le rempla=E7ant.

Existe-t-il quelque chose de plus propre en SQL ?

10 réponses

1 2
Avatar
3stone
Salut,

Gloops wrote:
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salariés,




What ???



d'une même table, la
difficulté est juste que sur le listing on voudrait que le remplaçant
apparaisse juste après la personne qu'il remplace.




heu... d'une même table ?
dans ce cas, je ne connais que la relation réflexive, ce qui
ne semble pas être le cas ici...


L'idée qui me vient est de créer un champ pour l'ordre de tri, et de
lancer une procédure, avant de sortir l'état, pour incrémenter à
chaque enregistrement, en passant par le remplaçant.

Existe-t-il quelque chose de plus propre en SQL ?



Tu peux donner un exemple de cette table et des champs qui
la compose, parce que là...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
db
Le 08/10/2010 04:59, Gloops a écrit :
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salariés, d'une même table, la
difficulté est juste que sur le listing on voudrait que le remplaçant
apparaisse juste après la personne qu'il remplace.

L'idée qui me vient est de créer un champ pour l'ordre de tri, et de
lancer une procédure, avant de sortir l'état, pour incrémenter à chaque
enregistrement, en passant par le remplaçant.

Existe-t-il quelque chose de plus propre en SQL ?




Bonjour,

A priori, si la table qui contient l'association "remplace" contient
aussi une information unique, on doit pouvoir s'en sortir avec une
requête UNION.

Mais il faudrait en savoir davantage sur la structure des tables
Salariés et Remplace

db
Avatar
RideHickul
'lut,

Tout d'abord, merci de ta question qui m'a rappellé les prises de tête sur
les égnimes du regreté "Jeux & Stratégie".
A vue de nez je dirais "IMPOSSIBLE" !

Pas pour des raisons techniques mais juste pour une raison logique :

J'ai une fine équipe de 3 salariés :
1) Bob qui remplace Luc
2) Luc qui remplace Max
3) Max qui remplace Bob

Jusque là, ok.
Mais tu dis : "le remplaçant doit apparaitre après la personne qu'il
remplace", soit pour notre fine équipe :

1) Luc après Bob
2) Max après Luc
3) Bob après Max

Il est simplement impossible de faire une liste répondant à ces 3 conditions
...

RideHickul
Avatar
Gloops
Gloops a écrit, le 08/10/2010 04:59 :
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salariés, d'une même table, la
difficulté est juste que sur le listing on voudrait que le remplaça nt
apparaisse juste après la personne qu'il remplace.

L'idée qui me vient est de créer un champ pour l'ordre de tri, et d e
lancer une procédure, avant de sortir l'état, pour incrémenter à chaque
enregistrement, en passant par le remplaçant.

Existe-t-il quelque chose de plus propre en SQL ?




Bon, alors on va donner un petit aperçu ...

tabSalarie

salIdentifiant NuméroAuto
salPrenom 30 A
salNom 30 A
salRemplace Long (clé externe)
salTri Long


La personne remplacée ne remplace personne. Il s'agit de gérer des
budgets de personnel en maintenant un effectif présent stable par la
présence d'un remplaçant au départ de quelqu'un.
Avatar
Michel__D
Bonjour,

Gloops a écrit :
Gloops a écrit, le 08/10/2010 04:59 :
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salariés, d'une même table, la
difficulté est juste que sur le listing on voudrait que le remplaçant
apparaisse juste après la personne qu'il remplace.

L'idée qui me vient est de créer un champ pour l'ordre de tri, et de
lancer une procédure, avant de sortir l'état, pour incrémenter à chaque
enregistrement, en passant par le remplaçant.

Existe-t-il quelque chose de plus propre en SQL ?




Bon, alors on va donner un petit aperçu ...

tabSalarie

salIdentifiant NuméroAuto
salPrenom 30 A
salNom 30 A
salRemplace Long (clé externe)
salTri Long


La personne remplacée ne remplace personne. Il s'agit de gérer des
budgets de personnel en maintenant un effectif présent stable par la
présence d'un remplaçant au départ de quelqu'un.



Ce genre de truc peut-être géré avec des dates (entrée, sortie).
Avatar
3stone
Salut,

Gloops wrote:
Gloops a écrit, le 08/10/2010 04:59 :
Bonjour tout le monde,

J'ai une relation "remplace" entre deux salariés, d'une même table,
la difficulté est juste que sur le listing on voudrait que le
remplaçant apparaisse juste après la personne qu'il remplace.

L'idée qui me vient est de créer un champ pour l'ordre de tri, et de
lancer une procédure, avant de sortir l'état, pour incrémenter à
chaque enregistrement, en passant par le remplaçant.

Existe-t-il quelque chose de plus propre en SQL ?




Bon, alors on va donner un petit aperçu ...

tabSalarie

salIdentifiant NuméroAuto
salPrenom 30 A
salNom 30 A
salRemplace Long (clé externe)
salTri Long


La personne remplacée ne remplace personne. Il s'agit de gérer des
budgets de personnel en maintenant un effectif présent stable par la
présence d'un remplaçant au départ de quelqu'un.



Tu dis, "la personne remplacée ne remplace personne"
j'en conclus donc que la personne remplacante n'est pas remplacée...
et son [salRemplace] est Null

Etant donné que tu parles de "listing", je présume "état".

- crée une requête, dans laquelle tu ammènes 2 x la table "T_Salaries"
- la seconde table aura automatiquement le suffixe "_1"
- ne crées pas de relation entre ces tables

Dans la grille, tu amènes:
- les champs de la table "T_Salaries"
- puis les champs de la table "T_Salaries_1"

Comme critère de [T_Salaries.salIdentifiant] tu écris:
[T_Salaries_1.salIdentifiant] AND NOT NULL

Exécute ta requête et tu obtiens sur une ligne les titulaires et
leur remplacant.

Dans l'état, tu arranges tes champs à souhait... en deux lignes!

Pour le SQL de la requête...

SELECT T_Salaries.salIdentifiant, T_Salaries.salPrenom,
T_Salaries.salNom, T_Salaries.salRemplace,
T_Salaries_1.salPrenom, T_Salaries_1.salNom,
T_Salaries_1.salRemplace
FROM T_Salaries, T_Salaries AS T_Salaries_1
WHERE (((T_Salaries.salRemplace)=[T_Salaries_1.salIdentifiant]
And (T_Salaries.salRemplace) Is Not Null))
ORDER BY T_Salaries.salIdentifiant;

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Gloops
3stone a écrit, le 09/10/2010 15:02 :
Tu dis, "la personne remplacée ne remplace personne"
j'en conclus donc que la personne remplacante n'est pas remplacée...
et son [salRemplace] est Null

Etant donné que tu parles de "listing", je présume "état".

- crée une requête, dans laquelle tu ammènes 2 x la table "T_Sala ries"
- la seconde table aura automatiquement le suffixe "_1"
- ne crées pas de relation entre ces tables

Dans la grille, tu amènes:
- les champs de la table "T_Salaries"
- puis les champs de la table "T_Salaries_1"

Comme critère de [T_Salaries.salIdentifiant] tu écris:
[T_Salaries_1.salIdentifiant] AND NOT NULL

Exécute ta requête et tu obtiens sur une ligne les titulaires et
leur remplacant.

Dans l'état, tu arranges tes champs à souhait... en deux lignes!

Pour le SQL de la requête...

SELECT T_Salaries.salIdentifiant, T_Salaries.salPrenom,
T_Salaries.salNom, T_Salaries.salRemplace,
T_Salaries_1.salPrenom, T_Salaries_1.salNom,
T_Salaries_1.salRemplace
FROM T_Salaries, T_Salaries AS T_Salaries_1
WHERE (((T_Salaries.salRemplace)=[T_Salaries_1.salIdentifiant]
And (T_Salaries.salRemplace) Is Not Null))
ORDER BY T_Salaries.salIdentifiant;




Hum, il faudra que je me penche sérieusement là-dessus, mais voilà qui
sonne bien comme la bonne réponse.

Merci.

Pour la mission suivante je pointe sur un truc où on me demandera du SQ L
à haute dose, c'est vrai que jusque là j'ai assez facilement tendance à
avoir recours à des jeux d'enregistrements.

On met beaucoup de temps à acquérir les bons réflexes, sur SQL ?
Avatar
Gloops
Michel__D a écrit, le 09/10/2010 13:59 :

Ce genre de truc peut-être géré avec des dates (entrée, sortie) .



Ah oui seulement le client a fait ajouter explicitement sur le MCD que
les dates d'entrée et de sortie sont facultatives.

Ce n'est pas très fréquent, que ce genre de mention soit portée
explicitement sur le MCD, alors quand c'est le cas ...
Avatar
Michel__D
Re,

Gloops a écrit :
Michel__D a écrit, le 09/10/2010 13:59 :

Ce genre de truc peut-être géré avec des dates (entrée, sortie).



Ah oui seulement le client a fait ajouter explicitement sur le MCD que
les dates d'entrée et de sortie sont facultatives.

Ce n'est pas très fréquent, que ce genre de mention soit portée
explicitement sur le MCD, alors quand c'est le cas ...



Je te souhaite bon courage alors !

Que feras-tu pour le remplaçant du remplaçant ?

PS:Facultatif ne veut pas dire interdit.
Avatar
Gloops
Michel__D a écrit, le 10/10/2010 00:32 :
Je te souhaite bon courage alors !

Que feras-tu pour le remplaçant du remplaçant ?



Je ferais peut-être bien d'aborder la question avec le client,
effectivement. A priori vu comme est présentée l'application ça
m'étonnerait que le problème se pose, mais il vaut mieux qu'ils n'aie nt
pas la surprise, un jour ...


PS:Facultatif ne veut pas dire interdit.



Non, ça veut juste dire qu'il ne faut pas compter dessus.
1 2