Bonjour,

J'utilise Delphi 11.1 avec les composants firedac pour afficher les données d'une base sqlite.

Dans ma base, j'ai les données suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- // Tables
CREATE TABLE "auteurs" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT,
  "nom" VARCHAR(255) NOT NULL,
  "prenom" VARCHAR(255) DEFAULT NULL
);
 
-- // Vues
CREATE VIEW auteurs_nom_prenom AS
    SELECT
      "id",
      CAST(
        CASE
          WHEN "prenom" IS NULL OR "prenom" = "" THEN "nom"
          ELSE "prenom" || " " || "nom"
        END 
        AS varchar(510)) "prenom_nom"
    FROM "auteurs";
Je souhaite afficher des données en faisant une jointure sur ma vue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
qry.SQL.Text := 'SELECT l."titre", l."lu", '
  + '   g."nom" "genre" '
//  + '   , a.prenom_nom'
  + ' FROM "livres" l '
  + ' LEFT JOIN "genres" g ON l."genre_id" = g."id" '
  + ' LEFT JOIN "auteurs_nom_prenom" a ON l."auteur_id" = a."id";';

La requête fonctionne correctement dans sqlite.
Avec la ligne commenté, cela fonctionne, mais si je décommente , a.nom_prenom, j'obtiens l'erreur : 'Type de champ non valide'.

Savez-vous comment corriger cette erreur ?