Extraction PK et FK depuis les RDB$
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 :roll:
J'ai donc sorti mon guide SQL pour programmer ça:
Code:
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:
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 ?