SQL Vue En Ligne (Inline View) | |
Une vue en ligne (inline view) est une instruction SELECT dans la clause FROM. Une vue est une table virtuelle qui a les caractéristiques d'une table mais qui ne contient aucune donnée réelle. Dans une construction de vue en ligne, au lieu de spécifier le ou les noms de table après le mot-clé FROM, la source des données provient en réalité de la vue en ligne. Une vue en ligne est parfois appelée table dérivée. Ces deux termes sont utilisés de manière interchangeable. SyntaxeLa syntaxe pour une vue en ligne est la suivante: SELECT "Nom_de_Colonne" FROM (Vue_en_Ligne);
ExempleSupposons que nous ayons deux tables: la première table est User_Address, qui associe chaque utilisateur à un code postal; la deuxième table est User_Score, qui enregistre toutes les notes de chaque utilisateur. La question est, comment écrire une requête SQL pour trouver le nombre d'utilisateurs ayant obtenu plus de 200 points pour chaque code postal? Sans utiliser de vue en ligne, nous pouvons accomplir cela en deux étapes : Requête 1 CREATE TABLE User_Higher_Than_200
SELECT User_ID, SUM(Score) FROM User_Score GROUP BY User_ID HAVING SUM(Score) > 200; Requête 2 SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM User_Higher_Than_200 a1, User_Address a2 WHERE a1.User_ID = a2.User_ID GROUP BY a2.ZIP_CODE; Dans le code ci-dessus, nous avons introduit une table temporaire, User_Higher_Than_200, pour stocker la liste des utilisateurs ayant obtenu plus de 200 points. User_Higher_Than_200 est ensuite utilisée pour faire une jointure avec la table User_Address afin d'obtenir le résultat final. Nous pouvons simplifier le SQL ci-dessus en utilisant la construction de vue en ligne comme suit: Requête 3 SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM (SELECT User_ID, SUM(Score) FROM User_Score GROUP BY User_ID HAVING SUM(Score) > 200) a1, User_Address a2 WHERE a1.User_ID = a2.User_ID GROUP BY a2.ZIP_CODE; Le code en rouge représente une vue en ligne. Il y a deux avantages à utiliser une vue en ligne ici: 1. Nous n'avons pas besoin de créer la table temporaire. Cela évite que la base de données ait trop d'objets, ce qui est une bonne chose car chaque objet supplémentaire dans la base de données coûte des ressources à gérer. 2. Nous pouvons utiliser une seule requête SQL pour accomplir ce que nous voulons. Remarquez que nous traitons la vue en ligne exactement de la même manière que nous traitons une table. En comparant la Requête 2 et la Requête 3, nous voyons que la seule différence est que nous remplaçons le nom de la table temporaire dans la Requête 2 par l'instruction de vue en ligne dans la Requête 3. Tout le reste reste inchangé.
Copyright © 2024 1keydata.com Tous droits réservés |