Home

Affichage

 

Présentation des vues

 

Introduction

Lors de l'étude de l'analyse des données, une requête est une technique d'isoler une série de colonnes et/ou des enregistrements d'une table. Ceci est généralement effectué aux fins de l'analyse des données. Cela peut se faire également pour créer une nouvelle liste d'éléments pour toute raison particulière. La plupart du temps, une requête est créée temporairement, tel que lors de l'analyse de données en utilisant une table, un formulaire ou une page web. Après l'utilisation d'une telle liste temporaire, elle est alors rejetée.

De nombreuses applications de base de données, notamment Microsoft SQL Server, permettent de créer une requête et de pouvoir l'enregistrer pour une utilisation ultérieure, ou encore l'utiliser comme s'il s'agissait de son propre tableau.C'est l'idée derrière une vue.

Définition

Une vue est une liste de colonnes ou une série d'enregistrements extraits d'une ou de plusieurs tables existantes, ou comme une combinaison d'une ou plusieurs vues et d'une ou de plusieurs tables. Basé sur ce point, avant de créer une vue, vous devez tout d'abord décider d'où ses colonnes et enregistrements proviennent. Évidemment le plus simple affichage est celui dont les colonnes et enregistrements proviennent d'une seule table.

Practical LearningFormation pratique : Présentation des vues

  • Démarrez Microsoft SQL Server et connectez-vous au serveur.
    Assurez-vous que vous disposez de la base de données RealEstate2 créée dans la leçon précédente. Si vous ne les avez pas créées, faites-le maintenant.

Principes fondamentaux de la création de vues

 

Création d'une vue visuellement

Pour créer une vue, vous pouvez utiliser l'Explorateur d'objets, une fenêtre de requête, l'invite de commande ou Windows PowerShell. Avant de commencer la vue, il vous faudrait spécifier les tables qui pourraient être impliquées. Pour créer une vue à partir de l'Explorateur d'objets, vous pouvez étendre la base de données, cliquez avec le bouton droit de la souris sur les vues et cliquez sur Nouvelle vue... Ceci ouvrirait la boîte de dialogue Add Table :

Les fonctionnalités de base sont exactement les mêmes que nous avons vues dans leçon 13 :

  • Pour spécifier la table qui serait utilisée comme source, vous pouvez cliquer dans la zone de liste de la page de propriétés de Tables
  • Si vous utiliserez une autre vue existante, à partir de la page de propriété de vues, vous pouvez cliquer sur le nom de la vue souhaitée
  • Si une fonction serait utilisée pour générer les enregistrements, vous pouvez la rechercher dans la page de propriétés de fonctions. Après avoir sélectionné l'objet source, vous pouvez soit double-cliquer dessus ou vous pouvez cliquer dessus une fois et cliquez sur Add. Dans la leçon précédente, nous avons vu que vous pourriez ajouter plus d'une table existante. De la même façon, vous pouvez ajouter plus d'une vue ou fonctions
  • Après la sélection de (s) la source (s), vous pouvez cliquer sur Fermer dans la boîte de dialogue Add Table

Après avoir sélectionné les objets, comme nous l'avons vu dans la leçon précédente, ils afficheraient dans la fenêtre. La barre d'outils du Concepteur de vue pourrait être ajoutée :

Query Designer Toolbar

Si le concepteur de requêtes n'est pas visible, dans le menu principal, vous pouvez cliquer sur View->Toolbars-> Query Designer. Alternativement, vous pouvez cliquer avec le bouton droit sur n'importe quelle barre d'outils ou le menu principal et cliquez sur Concepteur de requêtes.

La fenêtre dans laquelle vous créez une vue affiche quatre sections. Cela signifie que, outre les trois sections que nous avons examinées dans la leçon 13, il y a une nouvelle section : le résultat. Chaque section est représentée dans la barre d'outils du Concepteur de requêtes par un bouton : le bouton Show Diagram PaneShow Diagram Pane, le bouton Show Criteria PaneShow Criteria Pane, le bouton Show SQL PaneShow SQL Paneet le bouton Show Result PaneShow Result Pane.

Nous avons déjà passé en revue les trois principales sections (leçon 13). Les résultats de la section affiche le résultat produit par l'instruction SQL lorsqu'il est exécuté

Si vous ne souhaitez pas qu'une section particulière ou si vous souhaitez masquer certaines sections, vous pouvez cliquez avec le bouton droit de la souris n'importe où dans le tableau, placez la souris sur le volet et cliquez sur le nom de la section. Pour masquer une section quelconque, vous pouvez cliquer avec le bouton droit de la souris n'importe où dans la fenêtre, positionnez la souris sur Afficher les volets et cliquez sur l'une des sélections :

Using Panes

Lors de l'affichage d'une section, son option de menu est entourée.

  • Comme dans la leçon précédente, si vous utilisez plusieurs tables et elles ne sont pas (encore) liées, vous pouvez faire glisser une colonne d'une table et la déposer sur une autre table pour créer une jointure entre elles.
  • Comme nous l'avons vu dans les leçons précédentes, pour sélectionner une colonne, vous pouvez cliquer sur la case correspondante dans la liste supérieure. Ce serait l'afficher dans la première zone vide dans la colonne de la colonne et ajouterait son nom à l'instruction SELECT. Vous pouvez également cliquer sur une zone vide dans la colonne de la colonne pour révéler sa zone de liste déroulante, puis cliquez sur la flèche de la zone de liste déroulante et sélectionnez la colonne souhaitée dans la liste
  • Après avoir sélectionné la colonne, sa case pourrait être vérifiée dans la partie supérieure de la fenêtre, son nom s'affiche dans la colonne de la colonne et elle pourrait être ajoutée à l'instruction SELECT. Si vous connaissez le nom de la colonne que vous souhaitez ajouter, vous pouvez le saisir manuellement dans l'instruction SELECT.

La structure d'une vue peut être considérée comme complète lorsque l'instruction SELECT est aussi complète que possible. À tout moment, pour tester les résultats d'une vue, vous pouvez l'exécuter.Pour le faire, vous pouvez cliquer sur le bouton Execute SQL Execute. Cela entraînera la partie inférieure de l'affichage pour afficher les résultats de la requête. Voici un exemple :

View

Comme je l'ai déjà dit, l'une des raisons pour la création d'une vue est de pouvoir l'utiliser maintes et maintes fois. Pour atteindre cet objectif, la vue doit être enregistrée. Comme la plupart des objets dans SQL Server, une vue doit avoir un nom et il est enregistré dans son propre fichier. Pour enregistrer une vue à partir de la fenêtre d'affichage, vous pouvez cliquer sur le bouton Enregistrer de la barre d'outils. Vous pouvez aussi tenter de fermer la fenêtre. Vous serez alors invité à enregistrer. Lors de l'enregistrement d'une vue, vous devez lui donner un nom qui suit les règles et les suggestions de SQL.

Practical LearningFormation pratique : Création visuelle d' une vue

  1. Dans l'Explorateur d'objets, développez les bases de données et les nœuds de RealEstate2
  2. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur New View
  3. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et Conditions
  4. Cliquez sur Fermer
  5. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ PropertyTypeID de la table de propriétés
  6. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ ConditionID de la table de propriétés
  7. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition, City, ZIPCode, Bedrooms, Bathrooms, FinishedBasement, Stories, YearBuilt et MarketValue
  8. Dans la section Critères, cliquez sur PropertyType et appuyez sur la touche Tab 6 fois. Dans son champ de filtre, tapez Single Family
  9. Appuyez sur la touche de tabulation et, dans son Or, tapez Townhouse

Le nom d'une vue

Dans nos leçons, voici les règles que nous utiliserons pour nommer nos vues :

  • Un nom commence par une lettre. Exemples : n, act ou Second
  • Après la première lettre, le nom aura des combinaisons de caractères de soulignement, de lettres et de chiffres. Des exemples sont n24, act_52_t
  • Un nom n'inclut pas les caractères spéciaux tels que !, @, #, $, %, ^, &, ou *
  • Un nom n'aura pas les espaces
  • Si le nom est une combinaison de mots, chaque mot commencera par les majuscules. Exemples : DateHired, RealSport ou DriversLicenseNumber

Après avoir enregistré une vue, elle devient partie intégrante du nœud de Vues de sa base de données : un nœud serait créé pour elle et son nom s'affiche dans le nœud de vues de sa base de données.

Practical LearningFormation pratique : Enregistrement d'une vue

  1. Pour enregistrer la vue, sur la barre d'outils standard, cliquez sur le bouton Enregistrer
  2. Définissez le nom Homes puis cliquez sur le bouton OK.

  3. Fermez la fenêtre d'affichage
  4. Dans l'Explorateur d'objets, sous RealEstate2, cliquez avec le bouton droit de la souris sur Views et cliquez sur New View
  5. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et Conditions
  6. Cliquez sur Fermer
  7. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ PropertyTypeID de la table Properties
  8. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ ConditionID de la table de Properties
  9. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition, City, ZIPCode, Bedrooms, Bathrooms et MarketValue
  10. Dans la section Critères, cliquez sur PropertyType. Appuyez sur Tab 3 fois et appuyez sur la barre d'espace pour supprimer la coche de son champ de sortie
  11. Appuyez sur la touche de tabulation 3 fois. Dans son champ de Filtre, tapez Condominiums et appuyez sur la touche Entrée
  12. Dans le menu principal, cliquez sur Fichier-> Enregistrer
  13. Définissez le nom de Condos puis cliquez sur le bouton OK.
  14. Fermez la fenêtre d'affichage

Avec Transact-SQL

Pour créer par programmation une vue, vous utilisez la syntaxe SQL suivante :

CREATE VIEW ViewName 
AS 
SELECT Statement

Microsoft SQL Server peut générer du code squelette d'une vue pour vous. Pour l'utiliser, tout d'abord créez une fenêtre de requête vide. Affichez l'Explorateur de modèle. Dans l'Explorateur de modèle, développez le nœud d'affichage. À partir du nœud de la vue, faites glisser Create View et déposez-le dans la fenêtre de requête.

La création d'une vue commence avec l'expression CREATE VIEW suivie d'un nom. Le nom d'une vue suit les règles et les suggestions que nous avons examinées ci-dessus. Après le nom de la vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt pour définir le mode d'affichage.

Parce qu'une vue est principalement une instruction SQL, elle est définie à l'aide d'une instruction SELECT, utilisant les mêmes règles que nous avons étudiées pour l'analyse des données. Voici un exemple d'une vue :

CREATE VIEW dbo.ListOfMen 
AS 
SELECT dbo.Genders.Gender, 
       dbo.Persons.FirstName, dbo.Persons.LastName 
FROM   dbo.Genders INNER JOIN dbo.Persons 
ON     dbo.Genders.GenderID = dbo.Persons.GenderID 
WHERE (dbo.Genders.Gender = N'Male '); 
GO

Après la création de l'instruction SQL qui définit la vue, vous devez exécuter l'instruction. Si à l'aide d'une fenêtre de requête, vous pouvez le faire en appuyant sur la touche F5. Une fois que l'instruction est exécutée, son nom est automatiquement ajouté au nœud de vues de sa base de données même si vous n'enregistrez pas son code.

Practical LearningFormation pratique : Création d'une vue

  1. Assurez-vous que vous disposez de la base de données BNS Yugo créée dans la Leçon13. Si vous ne l'avez pas créée, faites-le maintenant.
    Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez sur Nouvelle requête
  2. Pour créer un nouvel affichage, tapez le code suivant
    Use YugoNationalBank ; 
    GO 
    CREATE VIEW PayrollPreparation 
    AS 
    SELECT dbo.Employees.EmployeeNumber, 
           dbo.Employees.LastName +', N'+ 
           dbo.Employees.FirstName AS [Full Name], 
           dbo.Employees.HourlySalary, 
           dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday, 
           dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday, 
           dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday, 
           dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday, 
           dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday, 
           dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday, 
           dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday, 
           dbo.TimeSheets.Week2Sunday 
    FROM   dbo.Employees INNER JOIN dbo.TimeSheets 
    ON     dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber ; 
    GO
  3. Pour exécuter le code, appuyez sur la touche F5
  4. Supprimez le contenu de l'ensemble de la fenêtre d'affichage

Ouverture ou Exécution d'une vue

 

Ouverture d'une vue

Comme je l'ai déjà dit, une vue est une technique de sélection d'enregistrements à afficher ou à utiliser sur un nouveau. Après qu'une vue ait été créée, vous pouvez l'ouvrir. Vous disposez de deux options principales.

  • Pour voir la structure d'une vue, telles que la (s) table (s) sur la/lesquelle (s) elle (s) est/sont fondée (s) et les relations, ni celles qui les composent, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Créer
  • Pour voir le code SQL qui rend une vue, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Modifier

L'exécution d'une vue

L'exécution d'une vue se compose de voir ses résultats. Pour ce faire, vous disposez de différentes options. Pour afficher les résultats d'une vue :

  • Ouvrez une fenêtre de requête vide associée à la base de données qui contient la vue. Dans la fenêtre de requête, écrivez une instruction SELECT en utilisant les mêmes formules et règles que nous avons vues pour les tables. Voici un exemple :

  • A partir de l'Explorateur d'objets, développez la base de données et ses vues de noeud. Cliquez avec le bouton droit de la souris sur le nom de la vue et cliquez sur Ouvrir l'affichage

Practical LearningFormation pratique : L'exécution d'une vue

  1. Dans l'Explorateur d'objets, sous RealEste2, développez des vues si nécessaire. Cliquez avec le bouton droit de la souris sur Condos, puis cliquez sur Ouvrir l'affichage

  2. Fermez la fenêtre d'affichage
  3. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez sur Nouvelle requête
  4. Pour exécuter la vue, dans la fenêtre d'affichage vide, tapez ce qui suit
    USE YugoNationalBank 
    GO 
    SELECT PayrollPreparation.* FROM PayrollPreparation ; 
    GO
  5. Pour exécuter l'affichage, appuyez sur la touche F5
  6. Supprimez le contenu de la fenêtre

Maintenance de vue

 

Les propriétés d'une vue

Dans Transact-SQL, une vue est considérée comme un objet. En tant que tel, il peut être consulté, modifié ou supprimé. Comme n'importe quel objet régulier, une vue possède ses propres caractéristiques. Pour les consulter, vous pouvez cliquez avec le bouton droit de la souris sur la vue et cliquez sur Propriétés. Une boîte de dialogue View Properties apparaitrait. Elle peut vous donner des informations telles que le nom de la base de données à laquelle la vue appartient, la date de création de la vue, etc..

Practical LearningFormation pratique : Accès aux propriétés d'une vue

  1. Pour créer une autre vue, tapez ce qui suit :
    --=============================================
    --Database : YugoNationalBank
    --View : TimeSheet
    --============================================= 
    USE YugoNationalBank 
    GO 
     
     
    IF object_id(N'TimeSheet', N'V') IS NOT NULL 
            DROP VIEW dbo.TimeSheet 
    GO 
     
     
    CREATE VIEW dbo.TimeSheet
    AS 
    SELECT EmplNumber, StartDate, 
           Week1Monday, Week1Tuesday, Week1Wednesday, 
           Week1Thursday, Week1Friday, 
           Week1Saturday, Week1Sunday, 
           Week2Monday, Week2Tuesday, Week2Wednesday, 
           Week2Thursday, Week2Friday, Week2Saturday, 
           Week2Sunday, notes 
    FROM   TimeSheets ;
  2. Appuyez sur F5 pour exécuter l'instruction.
  3. Supprimez le contenu de la fenêtre
  4. Dans l'Explorateur d'objets, sous YugoNationalBank, cliquez avec le bouton droit de la souris sur Views et cliquez sur Actualiser
  5. Développez les vues si nécessaire. Cliquez avec le bouton droit de la souris sur TimeSheet, puis cliquez sur Properties
  6. Appuyez sur Echap pour fermer la boîte de dialogue Properties

Modification d'une vue

Après qu'une vue a été créée, par vous ou par quelqu'un d'autre, vous pouvez trouver qu'elle a une colonne inutile, elle a besoin d'une colonne manquante, elle comprend des enregistrements inutiles ou certains enregistrements sont manquants. Heureusement, vous pouvez modifier la structure ou le code d'une vue. Ceci est appelé un avis de modification. Vous disposez de deux options principales :

  • Pour modifier visuellement une vue, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Créer. À partir de la fenêtre d'affichage, vous pouvez ajouter ou supprimer des colonnes. Vous pouvez également modifier des options dans une des sections de la fenêtre. Après modification de l'affichage, enregistrez-le et fermez-le
  • Pour modifier le code d'une vue, dans l'Explorateur d'objets, cliquez dessus avec le bouton droit de la souris et affichez les modifications. Après modification de code de l'affichage, vous pouvez l'enregistrer
  • A Partir de l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue, positionnez la souris sur Script View As-> ALTER to-> New Query Editor Window

La formule de base pour modifier une vue par programme est la suivante :

ALTER VIEW ViewName 
AS 
SELECT Statement

Vous démarrez l'altération avec l'expression ALTER VIEW suivie du nom de la vue. Après le nom de la vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt à montrer le changement. Après le mot-clé AS, vous pouvez ensuite définir la vue comme bon vous semble. Par exemple, vous pouvez créer une instruction SELECT qui inclut une modification du code existant ou une instruction entièrement nouvelle.

Dans la vue que nous avons créée pour afficher une liste des hommes d'une table, nous avons inclus une colonne pour le sexe. Cette colonne est inutile ou redondante parce que nous savons déjà que la liste inclut uniquement des hommes. Voici un exemple de modification de l'affichage à supprimer (ou plutôt omettre) la colonne Gender de la table Persons :

ALTER VIEW dbo.ListOfMen 
AS 
SELECT dbo.Persons.FirstName, dbo.Persons.LastName 
FROM   dbo.Genders INNER JOIN dbo.Persons 
ON     dbo.Genders.GenderID = dbo.Persons.GenderID 
WHERE (dbo.Genders.Gender = N'Male ') ;

La Suppression d'une vue

Au lieu de modifier une vue, si vous le trouvez complètement inutile, vous pouvez la supprimer de sa base de données. Vous disposez de différentes options. Pour supprimer une vue :

  • Dans l'Explorateur d'objets, dans une base de données, cliquez avec le bouton droit de la souris sur le nom de la vue et cliquez sur Supprimer. Vous aurez l'occasion de confirmer votre intention ou de changer d'avis
  • Dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue, positionnez la souris sur Script View As-> DROP To-> New Query Editor Window
  • Ouvrez une fenêtre de requête vide associée à la base de données qui possède l'affichage intempestif. Dans l'Explorateur de modèle, dans le nœud de la vue, faites glisser la vue et déposez-la dans la fenêtre de requête

La formule pour supprimer par programmation une vue est la suivante :

DROP VIEW ViewName

Sur le côté droit de l'expression DROP VIEW, entrez le nom de la vue indésirable et exécutez l'instruction. Vous ne serez pas averti avant que l'interprète supprime la vue.

L'Utilisation d'une vue

L'Entrée de données avec une Vue

Comme vu jusqu'à présent, une Vue est une liste d'enregistrements d'une table. Comme vous le pensez peut-être, la vue la plus simple est probablement la création à partir d'une seule table. Imaginez que vous avez une table d'employés et que vous souhaitez créer une vue qui répertorie uniquement leurs noms. Vous pouvez créer une vue comme suit :

CREATE VIEW dbo.EmployeesNames 
AS 
SELECT FirstName, 
       LastName, 
       LastName + ', N' + FirstName AS FullName FROM Persons ; 
GO

Sur ce point de vue qui est basé sur une table, vous pouvez effectuer l'entrée de données, à l'aide de la vue, plutôt que de la table. Pour le faire, vous suivez les mêmes règles que nous avons examinées à la leçon 9. Voici un exemple :

INSERT INTO dbo.EmployeesNames(FirstName, LastName) 
VALUES(N'Peter', N'Justice') ;

Si vous appliquez l'entrée de données à l'aide d'une vue, les données que vous fournissez sont saisies sur la table de base ; cela signifie que le tableau pourrait être mis à jour automatiquement. Basé sur cette fonctionnalité, vous pouvez créer une vue délibérément destinée à mettre à jour une table de sorte que, dans la vue, vous devrez inclure uniquement les colonnes qui doivent être mises à jour.

Practical LearningPratique : Exécution de saisie de données à l'aide d'une vue

  1. Pour créer une fonction, nous utiliserons, entrerons le code suivant :
    --= =================================================
    --Database : YugoNationalBank
    --Function : CreateTimeSheetCode
    --Purpose :  This function takes an employee number
    --           and the start date of a time sheet.
    --           Then it creates a unique number  
    --           in the format 0000000000000  
    --           The first 5 digits represent the  
    --           employee number,  
    --           the second 4 digits represent the year,  
    --           the 2 digits represent the month,  
    --           that last 2 digits represent the day  
    --==================================================  
    USE YugoNationalBank  
    GO    
     
     
    IF OBJECT_ID (N'dbo.CreateTimeSheetCode') IS NOT NULL     
       DROP FUNCTION dbo.CreateTimeSheetCode  
    GO    
     
     
     
    CREATE FUNCTION dbo.CreateTimeSheetCode(@EmplNbr nvarchar(6),  				
                                            @dteStart datetime2)  
    RETURNS nvarchar(15)  
    AS  
    BEGIN      
        DECLARE @strMonth AS nvarchar(20);      
        DECLARE @strDay   AS nvarchar(20);      
        DECLARE @iMonth AS int;      
        DECLARE @iDay AS int;      
        DECLARE @strTimeSheetCode nvarchar(20);        
     
     
        SET @iMonth   = CONVERT(nvarchar(20), MONTH(@dteStart));      
        SET @iDay     = CONVERT(nvarchar(20), DAY(@dteStart));        
     
     
        IF @iMonth < 10  	
                SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) +   
                                '0' + CONVERT(nvarchar(20), @iMonth);    
        ELSE         
           SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) +  
                           CONVERT(nvarchar(20), @iMonth);        
        IF @iDay < 10  	
               SET @strDay = @strMonth + '0' +   		
                           CONVERT(nvarchar(20), @iDay);   
        ELSE     
           SET @strDay = @strMonth + CONVERT(nvarchar(2), @iDay);    
     
        SET @strTimeSheetCode = @EmplNbr + @strDay;    
        RETURN @strTimeSheetCode;  
    END  
    GO
  2. Appuyez sur F5 pour exécuter
  3. Pour effectuer la saisie de données à l'aide d'une vue, entrez le code suivant :
    USE YugoNationalBank  
    GO  
    -- The following code performs data entry using a view  
    INSERT INTO dbo.TimeSheet   
    VALUES(N'46288', N'1/1/2007',          
           0.00, 8.50, 9.50, 8.50, 9.00, 0.00, 0.00,         
           10.00, 9.50, 8.50, 10.50, 9.00, 0.00, 0.00, N'');  
    GO  
    INSERT INTO dbo.TimeSheet  
    VALUES(N'66286', N'1/1/2007',           
           0.00, 8.50, 6.50, 5.50, 6.50, 0.00, 0.00,          
           4.00, 6.00, 6.50, 6.00, 5.50, 0.00, 0.00, N'');	  
    GO  
    INSERT INTO dbo.TimeSheet       
    VALUES(N'92493', N'1/1/2007',          
           0.00, 8.00, 9.00, 8.50, 9.50, 0.00, 0.00,         
           5.50, 6.50, 4.50, 6.00, 4.00, 0.00, 0.00, N'');  
    GO  
    INSERT INTO dbo.TimeSheet       
    VALUES(N'27199', N'1/15/2007',        
           6.00, 8.50, 0.00, 4.00, 6.50, 0.00, 0.00,         
           4.00, 0.00, 6.00, 4.00, 0.00, 0.00, 0.00, N'');  
    GO  
    INSERT INTO dbo.TimeSheet  
    VALUES(N'39538', N'1/15/2007',        
           8.00, 8.00, 6.00, 8.50, 6.00, 0.00, 0.00,         
           9.50, 10.50, 8.00, 8.00, 8.50, 0.00, 0.00,         
           'There were a few missing times in the time sheet. ' +         
           'They have been recorded.');  
    GO  
    INSERT INTO dbo.TimeSheet       
    VALUES(N'40550', N'1/15/2007',         
           8.50, 8.00, 0.00, 8.50, 0.00, 0.00, 0.00,          
           6.00, 6.50, 6.50, 0.00, 4.00, 0.00, 0.00, N'');  
    GO  
    INSERT INTO dbo.TimeSheet  
    VALUES(N'66286', N'1/29/2007',          
           8.00, 6.50, 9.50, 8.00,  7.50, 0.00, 0.00,         
           10.50, 9.50, 8.50, 8.00, 10.00, 0.00, 0.00, N'');  
    GO  
    INSERT INTO dbo.TimeSheet  
    VALUES(N'90026', N'2/12/2007',         
           8.50, 6.50, 8.00, 8.00, 9.50, 0.00, 0.00,          
           9.50, 8.00, 8.50, 8.00, 8.00, 0.00, 0.00, N'');	
    GO 
    INSERT INTO dbo.TimeSheet  
    VALUES(N'92493', N'2/12/2007',         
           4.00, 6.50, 5.50, 8.00, 6.50, 0.00, 0.00,         
           8.00, 8.00, 8.00, 6.00, 8.00, 0.00, 0.00, N'');  
    GO  
    -- The following code updates a table using a function  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'46288', N'1/1/2007')  
    WHERE (EmplNumber = N'46288') AND (StartDate = N'1/1/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/1/2007')  
    WHERE (EmplNumber = N'66286') AND (StartDate = N'1/1/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'1/1/2007')  
    WHERE (EmplNumber = N'92493') AND (StartDate = N'1/1/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'27199', N'1/15/2007')  
    WHERE (EmplNumber = N'27199') AND (StartDate = N'1/15/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'39538', N'1/15/2007')  
    WHERE (EmplNumber = N'39538') AND (StartDate = N'1/15/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'40550', N'1/15/2007')  
    WHERE (EmplNumber = N'40550') AND (StartDate = N'1/15/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/29/2007')  
    WHERE (EmplNumber = N'66286') AND (StartDate = N'1/29/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'90026', N'2/12/2007')  
    WHERE (EmplNumber = N'90026') AND (StartDate = N'2/12/2007');  
    GO  
    UPDATE dbo.TimeSheets  
    SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'2/12/2007')  
    WHERE (EmplNumber = N'92493') AND (StartDate = N'2/12/2007');  
    GO
  4. Appuyez sur F5 pour exécuter
  5. Supprimer le contenu de la fenêtre

Une vue avec des noms d'alias

Il est important de savoir qu'une vue est plus d'un type de table, que n'importe quel autre objet. Cela signifie qu'une vue n'est pas une fonction, mais elle peut utiliser une fonction. L'argument de mot ici signifie uniquement que certaines valeurs peuvent être transmises à une vue mais ces valeurs peuvent être spécifiées uniquement lors de la création de la vue. Elles ne sont pas de vrais arguments.

Lors de la structuration d'une vue, vous pouvez créer des espaces réservés pour les colonnes et les transmettre dans les parenthèses de la vue. Cela s'effectuerait comme suit :

CREATE VIEW CarIdentifier([Tag #], Manufacturer, [Type of Car], Available)...

Si vous utilisez cette technique, les noms transmis dans les parenthèses de la vue sont les légendes qui s'affichent au lieu des colonnes de la vue. Cette technique vous permet de spécifier les chaînes de votre choix pour les colonnes. Si vous souhaitez une en-tête de colonne pour afficher le nom réel de la colonne, écrivez le même. Dans le cas contraire, vous pouvez utiliser n'importe quelle chaîne souhaitée pour la colonne. Si le nom est en un mot, vous pouvez le taper. Si le nom contient des mots différents, incluez-les entre un crochet d'ouverture "[" et un crochet fermant"]".

Après avoir énuméré les chaînes nécessaires comme les légendes des colonnes, dans votre instruction SELECT de la vue, vous devez utiliser le même nombre exact de colonnes comme le nombre d'arguments de la vue. En fait, chaque colonne de votre instruction SELECT doit correspondre à un argument du même ordre.

Voici un exemple :

CREATE VIEW dbo.MenAndWomen([First Name], [Last Name], Gender) 
AS 
SELECT dbo.Persons.FirstName, 
       dbo.Persons.LastName, 
       dbo.Genders.Gender 
FROM   dbo.Genders INNER JOIN dbo.Persons 
ON     dbo.Genders.GenderID = dbo.Persons.GenderID ; 
GO

Car, comme nous l'avons déjà dit, une vue n'est pas une fonction et les valeurs passées à la vue ne sont pas des arguments réels, lors de l'exécution de la vue, ne spécifiez pas le nom des arguments. Créez simplement une instruction SELECT et spécifiez le nom de la vue comme la source. Voici un exemple :

Vues et requêtes conditionnelles

Outre ses caractéristiques d'interrogation lui permettant d'effectuer une analyse de données, probablement la plus importante fonction d'une requête est sa capacité à être aussi complexe que possible grâce à la gestion des instructions conditionnelles. Il est ainsi possible d'utiliser une vue au lieu d'une table dans les opérations et les expressions qui compliquent le code ou la structure d'une table. Lorsque vous créez une vue, dans sa déclaration SELECT, vous pouvez effectuer des sélections de colonne, les commander et définir des critères pour exclure certains enregistrements.

Voici un exemple :

Fonctions et vues

Pour créer des vues plus complexes ou avancées, vous pouvez impliquer des fonctions. Comme toujours, probablement les fonctions les plus faciles à utiliser sont celles intégrées.

S'il n'y a aucune fonction intégrée qui effectue l'opération que vous souhaitez, vous pouvez créer votre propre fonction. Voici un exemple :

USE People ; 
GO 
CREATE FUNCTION dbo.GetFullName 
(
        @FName type nvarchar (20), 
        @LName type nvarchar (20)
) 
RETURNS nvarchar(41) 
AS 
BEGIN 
        RETURN @LName + ', N' + @ FName ; 
END 
GO

Une fois que vous avez une fonction que vous souhaitez utiliser, vous pouvez l'appeler dans le corps de votre vue comme vous le jugez nécessaire. Voici un exemple :

CREATE VIEW dbo.MyPeople 
AS 
SELECT dbo.GetFullName (FirstName, LastName) AS [Full Name], 
       dbo.Genders.Gender 
FROM   Genders INNER JOIN dbo.Persons 
ON     dbo.Genders.GenderID = dbo.Persons.GenderID ;

Cela donnerait :

Practical LearningFormation pratique: Utilisation d'une fonction dans une vue

  1. Dans l'Explorateur d'objets, sous YugoNationalBank, développez Views si nécessaire.
    Cliquez avec le bouton droit de la souris sur PayrollPreparation, positionnez la souris sur Script View As-> ALTER to-> New Query Editor Window
  2. Modifiez le code comme suit :
    USE [YugoNationalBank]  
    GO  
    SET ANSI_NULLS ON  
    GO  
    SET QUOTED_IDENTIFIER ON  
    GO  
    ALTER VIEW [dbo].[PayrollPreparation]  
    AS  
    SELECT 	dbo.Employees.EmployeeNumber,     
             dbo.Employees.LastName + ', N' +  
             dbo.Employees.FirstName AS [Full Name], 
             dbo.Employees.HourlySalary,          
             dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday,          
             dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday,          
             dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday,          
             dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday,          
             dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday,           
             dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday,           
             dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday,           
             dbo.TimeSheets.Week2Sunday,        
     
             CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) + 
         	CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) +   
             CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) +  
         	CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) +   
             CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) +   
          	CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney)  	
             AS [Total Week1],           
             CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) +  
             CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) +   
             CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) +   
             CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney)  	
             AS [Total Week2],   	
             CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) +   	
             CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) +   
          	CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) +   
         	CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney)  	
             AS [Total Time Sheet]  
    FROM     dbo.Employees INNER JOIN dbo.TimeSheets   
    ON       dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber;  
  3. Pour mettre à jour la requête, dans le menu principal, cliquez sur Query-> Execute
  4. Supprimer le contenu de la fenêtre
  5. Pour voir le résultat de la requête, tapez ce qui suit :
    Use YugoNationalBank 
    GO 
    USE YugoNationalBank 
    GO 
    PayrollPreparation.* 
    SELECT FROM PayrollPreparation ; 
    GO
  6. Supprimez le contenu de la fenêtre

 
 
   
 

Résumé des vues

 

Introduction

Examinez le tableau suivant de vidéos créé dans une base de données VideoCollection :

-- =============================================  
-- Database: VideoCollection  
-- =============================================  
USE master  
GO    
-- Drop the database if it already exists  
IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'VideoCollection'  
)  
DROP DATABASE VideoCollection  
GO    
 
 
CREATE DATABASE VideoCollection  
GO    
 
 
USE VideoCollection;  
GO    
 
 
CREATE TABLE Videos  
(  
        VideoID int identity(1, 1) not null,  
        Title nvarchar(50) not null,  
        Director nvarchar(50),  
        VideoLength int,  
        Rating nchar(10),  	
        YearReleased int  
);  
GO    
 
 
INSERT INTO Videos(Title, Director, VideoLength,  	
                   Rating, YearReleased)  
VALUES(N'Two for the Money', N'D.J. Caruso', 123, N'R', 2008),        
      (N'Her Alibi', N'Bruce Beresford', 94, N'PG-13', 1998),        
      (N'Memoirs of a Geisha', N'Rob Marshall', 145, N'PG-13', 2006),        
      (N'Wall Street', N'Oliver Stone', 126, N'R', 2000);          
 
 
GO  
INSERT INTO Videos(Title, Director, VideoLength, Rating)  
VALUES(N'Distinguished Gentleman (The)', N'Jonathan Lynn', 112, N'R');  
GO    
 
 
INSERT INTO Videos(Title, Director, YearReleased, VideoLength)  
VALUES(N'The Silence of the Lambs', N'Jonathan Demme', 1991, 118);  
GO    
 
 
INSERT INTO Videos(Title, Director, YearReleased, VideoLength)  
VALUES(N'A Few Good Men', N'Rob Reiner', 1992, N'138');  
GO    
 
 
GO  
INSERT INTO Videos(Title, Director, VideoLength,  	
                   Rating, YearReleased)  
VALUES(N'Michael Jackson Live in Bucharest',         
       N'Andy Morahan', 122, N'N/R', 1992);  
GO    
 
 
INSERT INTO Videos(Title, Director, Rating, VideoLength)  
VALUES(N'The Lady Killers', N'Joel Coen & Ethan Coen', N'R', N'104');  
GO    
 
INSERT INTO Videos(Title, Director) VALUES(N'Outfoxed', N'Robert Greenwald');  
GO    
 
INSERT INTO Videos(Title, Director, VideoLength,  		
                   Rating, YearReleased)  
VALUES(N'Sneakers', N'Phil Alden Robinson', 126, N'PG-13', 1992),        
      (N'Soldier', N'Paul Anderson', 99, N'R', 1998),        
      (N'War of the Roses (The)', N'Dany de Vito', 116, N'R', 2001),        
      (N'Last Castle (The)', N'Rod Lurie', 133, N'R', 2001);  
GO    
 
INSERT INTO Videos(Title, Director, VideoLength)  
VALUES(N'Ghosts of Mississippi', N'Rob Reiner', 130);  
GO

Il existe différents types de statistiques, que vous souhaiterez peut-être obtenir à partir de cette table. Vous pouvez connaître le nombre de vidéos dans le tableau. Vous souhaitez connaître le nombre de vidéos qui sont notés R, ou le nombre des vidéos nommées PG-13. Vous pouvez connaître la durée moyenne des vidéos. Pour vous aider à obtenir ces statistiques, vous pouvez créer une requête sommaire.

Une vue est dénommée résumé si elle fournit une ou plusieurs statistiques analytiques sur les enregistrements.

Création d'une vue de synthèse

Avant de créer une vue de synthèse, dans l'Explorateur d'objets, développez la base de données sur laquelle vous allez travailler. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur New View... Dans la boîte de dialogue Add Table, sélectionnez les tables (ou view(s)) et fermez-les. Pour lancer une requête sommaire :

  • Cliquez avec le bouton droit de la souris quelque part dans la fenêtre du milieu, puis cliquez sur Add Group By
  • Dans la barre d'outils du Concepteur de vue, cliquez sur le bouton Add Group By Add Group By
  • Dans le menu principal, cliquez sur View Designer, puis cliquez sur Add Group By

Il obtient la vue prête pour le résumé.

La formule pour créer une vue synthétique par programmation est la suivante :

SELECT What 
FROM WhatObject(s) 
GROUP BY Column (s)

La nouvelle expression dans cette formule est GROUP BY. Cela indique que vous souhaitez résumer un groupe de valeurs d'une ou de plusieurs colonnes. Bien entendu, il y a des règles à suivre.

Bien que vous puissiez créer une vue récapitulative avec tous les champs ou les champs d'une vue, l'objectif de la vue est de résumer les données. Pour une bonne vue récapitulative, vous devez sélectionner une colonne où les enregistrements contiennent des catégories de données. Cela signifie que les enregistrements dans la liste doivent être regroupés par catégories. Pour cela, le SQL fournit l'expression GROUP BY. Cela signifie que, lorsque les enregistrements affichent, ils seraient regroupés par leurs catégories. Par exemple, si vous souhaitez obtenir le nombre de vidéos par cote, vous sélectionnez la colonne qui contient cette information : Rating. Vous pouvez également sélectionner d'autres colonnes. Voici un exemple :

Summary Query

Lorsque les résultats se montrent, ils seraient regroupés par leurs catégories :

Summary Query

Comme je l'ai déjà dit, une vue récapitulative vise à fournir des statistiques. Par conséquent, il est normal que vous vous intéressez uniquement à la (aux) colonne (s) qui tient (ent) les statistiques de votre choix et éviter les colonnes qui sont sans importance. En conséquence, si vous sélectionnez (uniquement) une colonne qui contient les informations que vous souhaitez, dans la liste qui en résulte, chacune de ses catégories s'afficherait une seule fois :

Summary Query

Résumé des valeurs

Pour obtenir les types de statistiques voulues, dans la section critères, ajoutez la même colonne une fois de plus et donnez-lui une légende dans la section alias. Puis, cliquez sur la zone Group By qui correspond à la colonne en double :

Summary Query

En réalité, une vue récapitulative utilise une fonction d'agrégation pour afficher son résultat :

  • Count : le moteur de base de données utilise la fonction Count() pour compter le nombre d'occurrences de la catégorie dans la colonne et produit le total. Cette fonction compte également des valeurs NULL. La syntaxe de la fonction Count() est :
    int COUNT ({[[ALL | DISTINCT] expression] | *}) 

    Cette fonction prend un seul argument. Pour obtenir le nombre d'occurrences d'une valeur, dans la section critères, sélectionnez COUNT(*). Voici un exemple :

    Count

    Exécutez ensuite l'instruction :

    Summary Query: Count

    La fonction Count() renvoie une valeur de type int. Si vous travaillez sur un grand nombre d'enregistrements, vous pouvez appeler la fonction Count_Big(). Sa syntaxe est la suivante :

    bigint COUNT_BIG ({[ALL | DISTINCT] expression} | *) 
  • Examinez le tableau ci-après nommé :
    -- =============================================  
    -- Database: DepartmentStore  
    -- =============================================  
    USE master  
    GO    
     
     
    -- Drop the database if it already exists  
    IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'VideoCollection'  
    )  
    DROP DATABASE DepartmentStore  
    GO    
     
     
    CREATE DATABASE DepartmentStore  
    GO    
     
     
    USE DepartmentStore;  
    GO  
    -- =============================================  
    -- Database:     DepartmentStore
    -- Table:	        	Customer
    -- Description:	This table holds some information  
    --		                         about the customers who hold a store  
    --		                         credit card  
    -- =============================================  
    CREATE TABLE Customers  
    (  
           CustomerID int identity(1, 1) not null,  
           AccountNumber nchar(10) not null, 
           FullName nvarchar(50) not null 
    ); 
    GO    
    -- =============================================  
    -- Database: 	DepartmentStore
    -- Table:	            CreditCardPayments  
    -- Description:	This table holds the records of payments  
    --				                of the customers who hold a store  
    --				                credit cad  
    -- =============================================  
    CREATE TABLE CreditCardPayments  
    (      
         PaymentID int identity(1, 1) not null,  
              CustomerAccount nchar(10) not null,  
              Amount money not null  
    );  
    GO   
    INSERT INTO Customers(AccountNumber, FullName)  
    VALUES(N'924-074', N'Daniel Caruso'), (N'248-006', N'Annette Greenwald'),        
          (N'570-816', N'Robert Stonewall'), (N'824-692', N'John Stons');  
    GO    
     
     
    INSERT INTO CreditCardPayments(CustomerAccount, Amount)  
    VALUES(N'924-074', 15),  (N'248-006', 25),  (N'924-074', 50),        
          (N'570-816', 30),  (N'248-006', 20),  (N'570-816', 120),        
          (N'924-074', 95),  (N'924-074', 115), (N'570-816', 15),        
          (N'248-006', 100), (N'824-692', 75),  (N'924-074', 50),        
          (N'824-692', 40),  (N'924-074', 45),  (N'248-006', 125);  
    GO


    Si la colonne contient des valeurs numériques :

    • Sum : la fonction Sum() est utilisée pour résumer les valeurs dans la catégorie. La syntaxe de la fonction Sum() est :
      Number SUM ([ALL | DISTINCT] expression)

      Voici un exemple :

      Summary Query: Sum

    • Avg : la somme de la valeur dans une catégorie pourrait être divisée par le nombre d'occurrences dans cette catégorie pour obtenir la moyenne. La syntaxe de la fonction Avg() est :
      Number AVG ([ALL | DISTINCT] expression)

      Voici un exemple :

      Summary Query: Average

    • Min : la valeur la plus basse de la catégorie serait produite à partir de la fonction Min(). La syntaxe de cette fonction est la suivante :
      DependsOnType MIN ([ALL | DISTINCT] expression)

      Voici un exemple :

      Min

    • Max : la valeur la plus élevée de la catégorie serait produite à l'aide de la fonction Max(). La syntaxe de cette fonction est la suivante :
      DependsOnType MAX ([ALL | DISTINCT] expression)

      Voici un exemple :

      Max

    • StdDev : la fonction StdDev() est utilisée pour calculer l'écart de toutes les valeurs numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe considéré, cette fonction renvoie la valeur NULL. Cela signifie qu'il doit y avoir au moins deux valeurs différentes dans le groupe. La syntaxe de la fonction StdDev() est :
      float STDEV ([ALL | DISTINCT] expression)

      Voici un exemple :

      Standard Deviation

      Notez que la notation N/R produit NULL parce qu'une seule vidéo utilise cette note.

    • Var : la fonction Var() calcule la variance statistique de toutes les valeurs numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe considéré, cette fonction renvoie la valeur NULL. La syntaxe de la fonction est : Var()
      float VAR ([ALL | DISTINCT] expression)

      Voici un exemple :

      Variance

      La variance des valeurs dans la catégorie statistique serait calculée.

  • Expression : comme son nom l'indique, l'option d'expression vous permet d'écrire votre propre expression qui sera appliquée sur la colonne. Voici un exemple :

  • Where : pensez à la vue de synthèse suivante qui appelle la fonction COUNT(*) :

    Where

    Notez que cela comprend des vidéos nominales NULL, ce qui n'est pas un réelle évaluation. Imaginez que vous souhaitez inclure uniquement les vidéos qui ont une vraie évaluation. Pour vous aider à définir une condition, vous pouvez utiliser un emplacement d'option. Pour ce faire, dans les critères de section, ajoutez la colonne sur laquelle le résumé doit être appliqué et sélectionnez où. Ensuite, dans la zone de filtre équivalente, tapez la condition et exécutez l'instruction. Voici un exemple :

Where

Avoir un critère

Lorsque nous avons mentionné une condition Where dans nos points de vues récapitulatives, nous avons vu que nous devions ajouter une colonne en double pour l'appliquer. Dans certains cas, ce n'est pas nécessaire. Tenez compte du résumé suivant des paiements pour chaque compte :

Summary Query: Sum

Imaginez que vous souhaitez visualiser uniquement les comptes dont les paiements dépassent 250,00. Pour cela, vous pouvez ajouter une clause nommée HAVING à l'instruction. La formule à utiliser est la suivante :

La formule pour créer par programmation une vue synthétique est la suivante :

SELECT What 
FROM WhatObject(s) 
GROUP BY Column(s)
HAVING Condition

L'opérateur New dans cette formule est HAVING. Il vous permet de spécifier le critère par lequel l'instruction SELECT doit produire ses résultats. Par exemple, affichez uniquement les sommes qui sont supérieures à 250, vous pouvez écrire :

SELECT   CustomerAccount AS [Account    ], SUM(Amount) AS [Total Payments] 
FROM     CreditCardPayments 
GROUP BY CustomerAccount 
HAVING   SUM(Amount) > 250

Pour indiquer visuellement un critère HAVING, dans le filtre correspondant à la colonne, tapez l'expression conditionnelle et exécutez l'instruction. Voici un exemple :

HAVING

 
 
   
 

Précédent Copyright © 2010 Yevol Suivant