Bonjour,
Je cherche à obtenir en 1 seule requète le nb de PK et le nb de FK définies sur les tables "utilisateur" d'une DB
J'ai donc sorti mon guide SQL pour programmer ça:
et devinez...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 select a.rdb$relation_name as Tabl, a.rdb$field_id as Nb_col, count(b.RDB$FIELD_NAME) as Nb_PK from rdb$index_segments b inner join rdb$relation_constraints r on b.rdb$index_name=r.rdb$index_name AND r.rdb$constraint_type='PRIMARY KEY' inner join rdb$relations a on a.rdb$relation_name=r.rdb$relation_name where a.RDB$SYSTEM_FLAG=0 union select c.rdb$relation_name as Tabl, c.rdb$field_id as Nb_col,count(z.RDB$FIELD_NAME) as Nb_FK from rdb$index_segments z inner join rdb$relation_constraints k on z.rdb$index_name=k.rdb$index_name AND k.rdb$constraint_type='FOREIGN KEY' inner join rdb$relations c on c.rdb$relation_name=k.rdb$relation_name where c.RDB$SYSTEM_FLAG=0 group by a.rdb$relation_name ,a.rdb$field_idEt même punition avec le group by embarquant c.rdb$relation_name et c.rdb$field_id en +Envoyé par IBexpert
Idem en partant de rdb$relations et le 2nd inner sur rdb$index_segments
Par contremarche correctement, mais je n'ai que les PK...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select a.rdb$relation_name as Tabl, a.rdb$field_id as Nb_col, count(b.RDB$FIELD_NAME) as Nb_PK from rdb$relations a inner join rdb$relation_constraints r on a.rdb$relation_name=r.rdb$relation_name AND r.rdb$constraint_type='PRIMARY KEY' inner join rdb$index_segments b on b.rdb$index_name=r.rdb$index_name where a.RDB$SYSTEM_FLAG=0 group by a.rdb$relation_name ,a.rdb$field_id
D'où l'idée du UNION.
Qui peut m'aider ?
Partager