Nous souhaitons obtenir le nombre total d'entrées depuis 1979 classé par année mais en excluant les films totalisant à eux seuls plus de 10 millions d'entrées.
Pour cela, nous devons cumuler le nombre d'entrée de chaque film depuis 1979, enlever les entrées de ceux qui ont fait plus de 10 000 000 entrées puis trier le résultat par année.
Voici le code 4D correspondant à cette requête :
- En utilisant du code SQL :
TABLEAU ENTIER(aMovieYear;0)
TABLEAU ENTIER LONG(aSoldTickets;0)
C_ENTIER LONG($MovieYear;$MinSoldTickets)
$MovieYear:=1979
$MinSoldTickets:=10000000
Debut SQL
SELECT Year_of_Movie, SUM(Sold_Tickets)
FROM MOVIES
WHERE Year_of_Movie >= :$MovieYear
GROUP BY Year_of_Movie
HAVING SUM(Sold_Tickets) < :$MinSoldTickets
ORDER BY 1
INTO :aMovieYear, :aSoldTickets;
Fin SQL
TABLEAU TEXTE(aTitles;Taille tableau(aMovieYear))
TABLEAU TEXTE(aDirectors;Taille tableau(aMovieYear))
TABLEAU TEXTE(aMedias;Taille tableau(aMovieYear))
TABLEAU ENTIER LONG(aNrActors;Taille tableau(aMovieYear))
- En utilisant les commandes SQL génériques :
- En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :
C_TEXTE($tQueryTxt)
TABLEAU ENTIER(aMovieYear;0)
TABLEAU ENTIER LONG(aSoldTickets;0)
C_ENTIER LONG($MovieYear;$MinSoldTickets)
$MovieYear:=1979
$MinSoldTickets:=10000000
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, SUM(Sold_Tickets)"
$tQueryTxt:=$tQueryTxt+" FROM MOVIES"
$tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= :$MovieYear"
$tQueryTxt:=$tQueryTxt+" GROUP BY Year_of_Movie"
$tQueryTxt:=$tQueryTxt+" HAVING SUM(Sold_Tickets) < :$MinSoldTickets"
$tQueryTxt:=$tQueryTxt+" ORDER BY 1"
$tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aSoldTickets;"
Debut SQL
EXECUTE IMMEDIATE :$tQueryTxt;
Fin SQL
TABLEAU TEXTE(aTitles;Taille tableau(aMovieYear))
TABLEAU TEXTE(aDirectors;Taille tableau(aMovieYear))
TABLEAU TEXTE(aMedias;Taille tableau(aMovieYear))
TABLEAU ENTIER LONG(aNrActors;Taille tableau(aMovieYear))
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 Clause HAVING.