par
katagoto » 14 oct. 2008, 19:08
Bonjour à toute et à tous,
En ce moment je bosse sur la
Représentation Intervallaire (RI) et donc j'aurais aimé "compresser" cette requête :
Code : Tout sélectionner
UPDATE NEW_FAMILLE
SET NFM_BD = NFM_BD + 2
WHERE NFM_BD >= 35
UPDATE NEW_FAMILLE
SET NFM_BG = NFM_BG + 2
WHERE NFM_BG >= 35
INSERT INTO NEW_FAMILLE (NFM_BG, NFM_BD, NFM_LIB)
VALUES (35, 36, 'Roller')
Pour l'instant, sans teste j'arrive à :
Code : Tout sélectionner
UPDATE NEW_FAMILLE AS A, NEW_FAMILLE AS B, NEW_FAMILLE AS C
SET A.NFM_BD = A.NFM_BD + 2, B.NFM_BG = B.NFM_BG + 2
WHERE C.NFM_PK=10 AND A.NFM_BD >= C.NFM_BD AND B.NFM_BG >= C.NFM_BG;
INSERT INTO NEW_FAMILLE (NFM_BG, NFM_BD, NFM_LIB)
VALUES (35, 36, 'Roller')
Seulement, je dois la réduire encore, comment faire ? (le PK = 10 est un exemple)
Je suis sous :
PostGreSQL 8.3.4
Schema :
Code : Tout sélectionner
CREATE TABLE NEW_FAMILLE
(
NFM_PK serial
NFM_BG INTEGER,
NFM_BD INTEGER,
NFM_LIB CHARACTERE(32)
/* ... */
)
Par avance merci de votre aide
PS :
Question bonnus : Si dans une requete on met AS B, B est-il conservé dans le requête suivante, après un ; ?
Bonjour à toute et à tous,
En ce moment je bosse sur la [url=http://sqlpro.developpez.com/cours/arborescence/]Représentation Intervallaire[/url] (RI) et donc j'aurais aimé "compresser" cette requête :
[code]UPDATE NEW_FAMILLE
SET NFM_BD = NFM_BD + 2
WHERE NFM_BD >= 35
UPDATE NEW_FAMILLE
SET NFM_BG = NFM_BG + 2
WHERE NFM_BG >= 35
INSERT INTO NEW_FAMILLE (NFM_BG, NFM_BD, NFM_LIB)
VALUES (35, 36, 'Roller')
[/code]
Pour l'instant, sans teste j'arrive à :
[code]UPDATE NEW_FAMILLE AS A, NEW_FAMILLE AS B, NEW_FAMILLE AS C
SET A.NFM_BD = A.NFM_BD + 2, B.NFM_BG = B.NFM_BG + 2
WHERE C.NFM_PK=10 AND A.NFM_BD >= C.NFM_BD AND B.NFM_BG >= C.NFM_BG;
INSERT INTO NEW_FAMILLE (NFM_BG, NFM_BD, NFM_LIB)
VALUES (35, 36, 'Roller')[/code]
Seulement, je dois la réduire encore, comment faire ? (le PK = 10 est un exemple)
Je suis sous :
[size=150][u][b][color=red]PostGreSQL 8.3.4[/color][/b][/u][/size]
:lol:
Schema :
[code]CREATE TABLE NEW_FAMILLE
(
NFM_PK serial
NFM_BG INTEGER,
NFM_BD INTEGER,
NFM_LIB CHARACTERE(32)
/* ... */
)[/code]
Par avance merci de votre aide
PS : [u]Question bonnus :[/u] Si dans une requete on met AS B, B est-il conservé dans le requête suivante, après un ; ?