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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| DROP DATABASE;
CREATE DATABASE '..\Data\Base.fdb' page_size 4096 DEFAULT CHARACTER SET ISO8859_1;
-- ===================
-- création "sequence"
-- ===================
CREATE SEQUENCE seq$rang;
-- =======================
-- création table "compet"
-- =======================
create table compet (
id integer not null primary key,
prenom char(10) not null collate fr_fr,
course char(10) not null collate fr_fr,
clagen smallint not null,
sexe char(01) not null collate fr_fr
);
-- ===========================
-- création tigger 'increment'
-- ===========================
SET TERM #;
CREATE TRIGGER increment for compet
active before insert position 0
as
begin
new.id = gen_id(seq$rang, 1);
END#
SET TERM ;#
-- =======================
-- insertion dans 'compet'
-- =======================
insert into compet (prenom, course, clagen, sexe) values ('Marc', 'leMans2005', 1, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Jeanne', 'leMans2005', 2, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Mireille', 'leMans2005', 3, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Bruno', 'leMans2005', 4, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Maurice', 'Monaco2006', 1, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Christian', 'Monaco2006', 2, 'H');
insert into compet (prenom, course, clagen, sexe) values ('Sylvie', 'Monaco2006', 3, 'F');
insert into compet (prenom, course, clagen, sexe) values ('corinne', 'Monaco2006', 4, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Bernadette', 'Monaco2006', 4, 'F');
insert into compet (prenom, course, clagen, sexe) values ('Elise', 'Monaco2006', 6, 'F');
-- ==================
-- Vidage de 'compet'
-- ==================
select * from compet;
ID PRENOM COURSE CLAGEN SEXE
============ ========== ========== ======= ======
1 Marc leMans2005 1 H
2 Jeanne leMans2005 2 F
3 Mireille leMans2005 3 F
4 Bruno leMans2005 4 H
5 Maurice Monaco2006 1 H
6 Christian Monaco2006 2 H
7 Sylvie Monaco2006 3 F
8 corinne Monaco2006 4 F
9 Bernadette Monaco2006 4 F
10 Elise Monaco2006 6 F
commit;
-- ====================
-- création "generator"
-- ====================
CREATE GENERATOR gen$hom;
CREATE GENERATOR gen$fem;
-- ================
-- Requête sans CTE
-- ================
select prenom, course, clagen, sexe,
case sexe when 'H' then next value for gen$hom else null end as clahom,
case sexe when 'F' then next value for gen$fem else null end as clafem
from compet
order by course, clagen
;
PRENOM COURSE CLAGEN SEXE CLAHOM CLAFEM
========== ========== ======= ====== ===================== =====================
Marc leMans2005 1 H 1 <null>
Jeanne leMans2005 2 F <null> 1
Mireille leMans2005 3 F <null> 2
Bruno leMans2005 4 H 2 <null>
Maurice Monaco2006 1 H 3 <null>
Christian Monaco2006 2 H 4 <null>
Sylvie Monaco2006 3 F <null> 3
Bernadette Monaco2006 4 F <null> 4
corinne Monaco2006 4 F <null> 5
Elise Monaco2006 6 F <null> 6
-- ====================
-- création "generator"
-- ====================
DROP GENERATOR gen$hom;
DROP GENERATOR gen$fem;
exit;
Appuyez sur une touche pour continuer... |
Partager