Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Chaque fois que vous écrivez une requête de récupération, vous articulez les colonnes souhaitées, les lignes souhaitées et l’emplacement où le processeur de requêtes doit trouver les données d’origine. En règle générale, ces données d’origine se composent d’une table ou de plusieurs tables jointes. Toutefois, les données d’origine peuvent provenir de sources autres que des tables. En fait, il peut provenir de vues, de requêtes, de synonymes ou de fonctions définies par l’utilisateur qui retournent une table.
Utiliser une vue à la place d’une table
Vous pouvez sélectionner des lignes dans une vue. Par exemple, supposons que la base de données inclut une vue appelée « ExpensiveBooks », dans laquelle chaque ligne décrit un titre dont le prix dépasse 19,99. La définition d’affichage peut ressembler à ceci :
SELECT *
FROM titles
WHERE price > 19.99;
Vous pouvez sélectionner les livres de psychologie coûteux simplement en sélectionnant les livres de psychologie à partir de la vue ExpensiveBooks. Le code SQL résultant peut ressembler à ceci :
SELECT *
FROM ExpensiveBooks
WHERE type = 'psychology';
De même, une vue peut participer à une JOIN opération. Par exemple, vous pouvez trouver les ventes de livres coûteux simplement en joignant la table des ventes à la vue ExpensiveBooks. Le code SQL résultant peut ressembler à ceci :
SELECT *
FROM sales
INNER JOIN ExpensiveBooks
ON sales.title_id = ExpensiveBooks.title_id;
Pour plus d’informations sur l’ajout d’une vue à une requête, consultez Ajouter des tables à des requêtes (Visual Database Tools).
Utiliser une requête à la place d’une table
Vous pouvez sélectionner des lignes à partir d’une requête. Par exemple, supposons que vous avez déjà écrit une requête récupérant des titres et des identificateurs des livres co-écrits , les livres avec plusieurs auteurs. Le code SQL peut ressembler à ceci :
SELECT titles.title_id,
title,
type
FROM titleauthor
INNER JOIN titles
ON titleauthor.title_id = titles.title_id
GROUP BY titles.title_id, title, type
HAVING COUNT(*) > 1;
Vous pouvez ensuite écrire une autre requête qui s’appuie sur ce résultat. Par exemple, vous pouvez écrire une requête qui récupère les livres de psychologie coécrits. Pour écrire cette nouvelle requête, vous pouvez utiliser la requête existante comme source des données de la nouvelle requête. Le code SQL résultant peut ressembler à ceci :
SELECT title
FROM (SELECT titles.title_id,
title,
type
FROM titleauthor
INNER JOIN titles
ON titleauthor.title_id = titles.title_id
GROUP BY titles.title_id, title, type
HAVING COUNT(*) > 1) AS co_authored_books
WHERE type = 'psychology';
Le texte mis en évidence montre la requête existante utilisée comme source des données de la nouvelle requête. La nouvelle requête utilise un alias (« co_authored_books ») pour la requête existante. Pour plus d’informations sur les alias, consultez Créer des alias de table (Visual Database Tools) et Créer des alias de colonne (Visual Database Tools).
De même, une requête peut participer à une JOIN opération. Par exemple, vous pouvez trouver les ventes de livres coûteux co-écrits simplement en associant la vue ExpensiveBooks à la requête qui récupère les livres co-écrits. Le code SQL résultant peut ressembler à ceci :
SELECT
ExpensiveBooks.title
FROM
ExpensiveBooks
INNER JOIN
(
SELECT
titles.title_id,
title,
type
FROM
titleauthor
INNER JOIN
titles
ON titleauthor.title_id
= titles.title_id
GROUP BY
titles.title_id,
title,
type
HAVING COUNT(*) > 1
)
Pour plus d’informations sur l’ajout d’une requête à une requête, consultez Ajouter des tables à des requêtes (Visual Database Tools).
Utiliser une fonction définie par l’utilisateur à la place d’une table
Vous pouvez créer une fonction définie par l’utilisateur qui retourne une table. Ces fonctions sont utiles pour effectuer une logique complexe ou procédurale.
Par exemple, supposons que la table employee contient une colonne supplémentaire, employee.manager_emp_idet qu’une clé étrangère existe de manager_emp_id à employee.emp_id. Dans chaque ligne de la table employé, la manager_emp_id colonne indique le patron de l’employé. Plus précisément, il indique le patron de l’employé emp_id. Vous pouvez créer une fonction définie par l’utilisateur qui retourne une table contenant une ligne pour chaque employé travaillant dans la hiérarchie organisationnelle d’un responsable général particulier. Vous pouvez appeler la fonction fn_GetWholeTeam et la concevoir pour prendre une variable d’entrée , le emp_id responsable dont vous souhaitez récupérer l’équipe.
Vous pouvez écrire une requête qui utilise la fonction fn_GetWholeTeam comme source de données. Le code SQL résultant peut ressembler à ceci :
SELECT *
FROM fn_GetWholeTeam('VPA30890F');
VPA30890F est le emp_id responsable dont vous souhaitez récupérer l’organisation. Pour plus d’informations sur l’ajout d’une fonction définie par l’utilisateur à une requête, consultez Ajouter des tables à des requêtes (Visual Database Tools). Pour obtenir une description complète des fonctions définies par l’utilisateur, consultez les fonctions définies par l’utilisateur.