Table SQL
Collection: SQLCommunity Edition+Présentation
Rédigez une requête SQL pour former une table SQL. Cela ne crée pas de véritable table dans la base de données : les résultats de la requête sont lus afin de pouvoir être utilisés dans les tableaux, les vues détaillées, les graphiques et les workflows. Cas d’utilisation : données agrégées et rapports statistiques.
Les tables SQL prennent uniquement en charge les instructions SELECT ou les instructions WITH ... SELECT. Elles permettent uniquement d’afficher les résultats des requêtes et ne prennent pas en charge la création, la modification ni la suppression de données.
Créer une table SQL
- Dans les fonctionnalités système, cliquez sur le menu des sources de données pour accéder à la page d’accueil des sources de données.
- Sélectionnez la source de données Main dans la liste, puis cliquez sur l’action « Configure » pour accéder à la base de données principale.
- Dés la gestion de la base de données principale, cliquez sur « Create collection », puis sélectionnez « SQL collection ».

Rédiger une requête SQL
Saisissez une requête SQL, puis cliquez sur « Execute » pour l’exécuter et tenter d’analyser les champs renvoyés ainsi que les tables de données sources. Le bouton « Execute » sert uniquement à exécuter l’aperçu et à analyser les champs. Après avoir vérifié que la requête SQL est valide, cliquez sur « Confirm » pour que le formulaire puisse soumettre cette requête comme requête confirmée.

Source collections correspond aux tables de données sources déduites de la requête SQL. Les principales tables de données existantes dont proviennent les champs des résultats sont identifiées, ce qui limite les choix disponibles de Field source lors du mappage des champs.
Le résultat de cette déduction sert à accélérer la configuration. En présence d’alias, de sous-requêtes, de champs calculés, de fonctions d’agrégation ou de jointures complexes dans la requête SQL, le résultat peut être partiellement inexact ou impossible à déduire. Vous pouvez alors spécifier manuellement Source collections.
Mappage des champs
Le mappage des champs est une configuration qui doit être confirmée après la création d’une table SQL. Les résultats de la requête SQL indiquent uniquement à NocoBase quelles colonnes ont été renvoyées. Pour que ces colonnes puissent être utilisées comme des champs ordinaires dans l’interface, vous devez également confirmer Field source ou configurer Field interface ainsi que le nom d’affichage du champ.
En savoir plus sur la configuration des champs

Par exemple, si la requête SQL renvoie customers.name as customer_name, provenant du champ « Nom du client » de la table des clients, vous pouvez le mapper au champ correspondant de la table des clients. NocoBase pourra ainsi réutiliser le titre et la configuration d’interface du champ d’origine.
Si un champ provient d’un résultat calculé, comme count(*) as total ou sum(amount) as amount_total, il n’a généralement pas de champ source clairement défini. Vous devez alors sélectionner manuellement un Field interface approprié.
Field source dépend de Source collections. La sélection préalable de la table de données source est nécessaire pour que les champs sources disponibles dans cette table apparaissent dans le tableau de mappage.
Lorsque la déduction des champs contient Field source, NocoBase réutilise en priorité le Field interface du champ source. Si le champ source ne peut pas être déduit, vous pouvez spécifier manuellement Field source ; si le résultat de la déduction ne correspond pas à la signification métier, vous devez supprimer Field source, puis spécifier manuellement Field source, ou sélectionner manuellement Field interface et configurer Field display name.
Identifiant unique des enregistrements
Une table SQL doit être configurée avec un Record unique key. Sinon, il est impossible de créer des blocs dans les pages et d’afficher correctement les enregistrements. Vous pouvez sélectionner un champ ou une combinaison de plusieurs champs comme identifiant unique. Les champs adaptés au rôle de Record unique key remplissent généralement les conditions suivantes :
- Chaque ligne des résultats de la requête est unique
- La valeur du champ est stable et ne change pas en fonction de la pagination, du tri ou de l’évolution du périmètre statistique
- Le champ n’est pas vide
- Le champ est toujours renvoyé dans les résultats de la requête
Si les résultats proviennent d’une seule table, il est préférable de renvoyer la clé primaire de la table d’origine. S’ils proviennent de jointures entre plusieurs tables ou d’agrégations, vous pouvez conserver dans la requête SQL un identifiant métier stable, ou renvoyer plusieurs champs permettant d’identifier conjointement l’enregistrement.
N’utilisez pas des valeurs telles que row_number(), qui varient en fonction du tri, des filtres ou du périmètre statistique, comme Record unique key stable à long terme. Une modification de l’identifiant unique peut empêcher les blocs de page, les permissions, les workflows et les API externes de retrouver le même enregistrement.

