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:
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_id
et devinez...
Citation Envoyé par IBexpert
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
Et même punition avec le group by embarquant c.rdb$relation_name et c.rdb$field_id en +
Idem en partant de rdb$relations et le 2nd inner sur rdb$index_segments

Par contre
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
marche correctement, mais je n'ai que les PK...
D'où l'idée du UNION.

Qui peut m'aider ?