Bonjour, j'ai un petit problème avec une requête.
On me dit qu'elle est fausse (sans autre précision) mais j'ai beau la retourner dans tout les sens je ne trouve pas ce qui cloche.
Voici la requête :
Voilà comment j'interprète la requête (j'aimerais bien qu'il s'agisse uniquement d'une faute de compréhension de la requête )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For those deactivated agents that are on more than seven missions, change their deactivation date to the earliest deactivation date of all agents who were activated in the same year as the agent you are currently updating. Now create a copy of the updated AGENT table called blabla.
Pour les agents "retraités" qui ont effectués plus de sept mission, changer la date de leur "mise en retraite" pour la plus récente date de mise en retraite des agents qui ont été engagé la même année que l'agent en cours d'update.
ENSUITE, créer une copy des agents updaté dans une table nommée blabla.
Pour cette requête, j'ai besoin de travailler sur deux tables
La table agent contient :
Agent_id (PK)
Location_id (FK)
First_name
Last_name
Code_name
Security_level
Birth_date
activation_date
deactivation_date
la table mission_agents contient
mission_id (fk)
agent_id (fk)
Au besoin, je met aussi la table mission mais je ne pense pas qu'il y en ai besoin.
Mission :
mission_id (pk)
code_name
location_id (fk)
mission_type_id (fk)
mission_date
security_level
Voici ma requête :
Piste d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 update agents a set deactivation_date= ( select max(deactivation_date) from agents ag where to_char(ag.activation_date,'yy')=to_char(a.activation_date,'yy') ) where deactivation_date in ( select deactivation_date from ( select a.agent_id, a.deactivation_date, count(*) from agents a inner join missions_agents m on a.agent_id=m.agent_id where a.deactivation_date is not null group by a.agent_id, a.deactivation_date having count(*)>7 ) ) ; drop table am_x_442_1 ; create table am_x_442_1 as select * from agents where agent_id in ( select agent_id from ( select a.agent_id, count(distinct m.mission_id) from agents a inner join missions_agents ma on a.agent_id=ma.agent_id inner join missions m on ma.mission_id= m.mission_id where a.deactivation_date is not null group by a.agent_id having count(distinct m.mission_id)>7 order by a.agent_id ) ) ;
1- J'ai mal compris la question
2- J'ai fait une erreur bête
3- Il y a une fonction que je connais pas
4- Le "NOW" serait trompeur, peut être que l'on me demande de faire les deux choses en même temps, avec la création d'un trigger ...
Merci beaucoup pour votre aide, il en va de mon avenir dans le monde génial de l'informatique ...
Partager