Ce code SQL est écrit en plusieur parties
- Update
- Select
C'est la partie Select qui t'intéresse.
Dans cette partie, après la clause "FROM" il y a 3 sous requêtes qui sont délimitées par des parenthèses :
1 2 3 4 5
| Update ...
Select ....
From ( sous requête 1 ) alias1,
( sous requête 2 ) alias2,
( sous requête 3 ) alias3 |
L'alias de la première sous requête est max_id et elle remonte la valeur maximale du champs seqbonus ( max(number(seqbonus)) ) pour la table bonus (donc une ligne), cette valeur est max_id.id.
L'alias de la deuxième sous requête est prom et elle remonte LES valeurS promotion id de la table promotion selon un certain nombre de critères. ces valeurs sont nommées prom.id, donc n lignes (en théorie). On les appellera prom.id suivi d'un numéro et on supposera que les numéros vont de 1 à m.
La troisième sous requête remonte le contenu de la table bonus selon un certain nombre de critères, plusieur lignes donc en théorie. On les appellera l(b) suivi d'un d'un numéro et on supposera que les numéros vont de 1 à n.
On obtient au final un paquet de lignes qu'on peut écrire
1 2 3 4 5 6 7 8 9
|
prom.id1 l(b)1 max_id.id numéro_de_ligne
prom.id1 l(b)2 max_id.id numéro_de_ligne
[...]
prom.id1 l(b)n max_id.id numéro_de_ligne
prom.id2 l(b)1 max_id.id numéro_de_ligne
prom.id2 l(b)2 max_id.id numéro_de_ligne
[...]
prom.idm l(b)n max_id.id numéro_de_ligne |
De ce "paquet" on va tirer les champs pour faire l'insertion.
Partager