4D v16

Utiliser des alias

Accueil

 
4D v16
Utiliser des alias

Utiliser des alias  


 

 

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 :

 ARRAY LONGINT(aSoldTickets;0)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 C_LONGINT($i;$vInd)
 
 $vInd:=0
 ALL RECORDS([ACTORS])
 For($i;1;Records in selection([ACTORS]))
    $vInd:=$vInd+1
    INSERT IN ARRAY(aTitles;$vInd;1)
    aTitles{$vInd}:=[ACTORS]FirstName+" "+[ACTORS]LastName
    RELATE ONE([ACTORS]Birth_City_ID)
    INSERT IN ARRAY(aDirectors;$vInd;1)
    aDirectors{$vInd}:=[CITIES]City_Name
    NEXT RECORD([ACTORS])
 End for
  ` Initialisation du reste des colonnes de list box pour visualiser l'information
 ARRAY INTEGER(aMovieYear;Taille tableau(aTitles))
 ARRAY TEXT(aMedias;Taille tableau(aTitles))
 ARRAY LONGINT(aSoldTickets;Taille tableau(aTitles))
 ARRAY LONGINT(aNrActors;Taille tableau(aTitles))
 MULTI SORT ARRAY(aDirectors;>;aTitles;>;aMovieYear;aMedias;aSoldTickets;aNrActors)

  • En utilisant du code SQL :

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     
     Begin 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;
     End SQL
      ` Initialisation du reste des colonnes de list box pour visualiser l'information
     ARRAY INTEGER(aMovieYear;Taille tableau(aTitles))
     ARRAY TEXT(aMedias;Taille tableau(aTitles))
     ARRAY LONGINT(aSoldTickets;Taille tableau(aTitles))
     ARRAY LONGINT(aNrActors;Taille tableau(aTitles))

  • En utilisant les commandes SQL génériques :

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     C_TEXT($tQueryTxt)
     
     SQL LOGIN(SQL_INTERNAL;"";"")
     $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"
     SQL EXECUTE($tQueryTxt;aTitles;aDirectors)
     SQL LOAD RECORD(SQL all records)
     SQL LOGOUT
      ` Initialisation du reste des colonnes de list box pour visualiser l'information
     ARRAY INTEGER(aMovieYear;Taille tableau(aTitles))
     ARRAY TEXT(aMedias;Taille tableau(aTitles))
     ARRAY LONGINT(aSoldTickets;Taille tableau(aTitles))
     ARRAY LONGINT(aNrActors;Taille tableau(aTitles))
  • 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 :

     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     C_TEXT($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"
     Begin SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     End SQL
     ARRAY INTEGER(aMovieYear;Taille tableau(aTitles))
     ARRAY TEXT(aMedias;Taille tableau(aTitles))
     ARRAY LONGINT(aSoldTickets;Taille tableau(aTitles))
     ARRAY LONGINT(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.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Prise en main

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Référence SQL ( 4D v16)