Lorsqu'une requête SQL est trop complexe ou contient des libellés trop longs la rendant difficile à lire, il est possible d'utiliser des alias afin d'améliorer sa lisibilité. Dans cette section, nous allons reprendre l'exemple de la section précédente (Jointures) en utilisant deux alias : Act pour la table ACTORS et Cit pour la table CITIES.
Voici le code 4D initial :
- En utilisant du code SQL :
TABLEAU TEXTE(aTitles;0)
TABLEAU TEXTE(aDirectors;0)
Debut SQL
SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName), CITIES.City_Name
FROM ACTORS AS 'Act', CITIES AS 'Cit'
WHERE Act.Birth_City_ID=Cit.City_ID
ORDER BY 2,1
INTO :aTitles, :aDirectors;
Fin SQL
TABLEAU ENTIER(aMovieYear;Taille tableau(aTitles))
TABLEAU TEXTE(aMedias;Taille tableau(aTitles))
TABLEAU ENTIER LONG(aSoldTickets;Taille tableau(aTitles))
TABLEAU ENTIER LONG(aNrActors;Taille tableau(aTitles))
- En utilisant les commandes SQL génériques :
- Il n'est pas possible d'utiliser CHERCHER PAR SQL dans ce contexte car cette commande ne peut pas recevoir plus d'une table en paramètre.
- En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :
TABLEAU TEXTE(aTitles;0)
TABLEAU TEXTE(aDirectors;0)
C_TEXTE($tQueryTxt)
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName), CITIES.City_Name"
$tQueryTxt:=$tQueryTxt+" FROM ACTORS AS 'Act', CITIES AS 'Cit'"
$tQueryTxt:=$tQueryTxt+" WHERE Act.Birth_City_ID=Cit.City_ID"
$tQueryTxt:=$tQueryTxt+" ORDER BY 2,1"
$tQueryTxt:=$tQueryTxt+" INTO :aTitles, :aDirectors"
Debut SQL
EXECUTE IMMEDIATE :$tQueryTxt;
Fin SQL
TABLEAU ENTIER(aMovieYear;Taille tableau(aTitles))
TABLEAU TEXTE(aMedias;Taille tableau(aTitles))
TABLEAU ENTIER LONG(aSoldTickets;Taille tableau(aTitles))
TABLEAU ENTIER LONG(aNrActors;Taille tableau(aTitles))
Pour tester ces exemples, lancez la base "4D SQL Code Samples" et affichez la boîte de dialogue principale. Choisissez le mode d'interrogation du moteur de 4D et cliquez sur le bouton Utilisation d'alias.