Les fonctions évaluées au tableau sont un type de fonctions dans SQL Server qui renvoie les données sous forme de tables. Lorsque vous effectuez des jointures dans SQL Server, vous pouvez rejoindre des lignes à partir de deux tables de base de données ou plus. Cependant, la possibilité de rejoindre un tableau avec une sortie d'une fonction évaluée de table n'est pas prise en charge à moins que vous n'utilisiez Appliquer les opérateurs.
SQL Server prend en charge deux opérateurs d'application:
Cross Apply est étroitement similaire, sémantiquement, à une jointure intérieure du serveur SQL. Cela signifie qu'il récupère les lignes d'une fonction de valeur de table et celle du tableau pour rejoindre uniquement là où il y a des correspondances entre les deux tables.
Extérieur s'appliquer, rejoindra les enregistrements d'une fonction de valeur de la table, et le tableau défini, quelles que soient toutes les lignes correspondantes.
Pour mieux comprendre comment utiliser les opérateurs croisés et extérieurs de SQL Server, adoptons une approche pratique.
Commencez par créer une base de données de test:
Créer une base de données ApplicationDB;Passez à la base de données Créer:
Utiliser ApplyDB;Ensuite, créez des tables et insérez des exemples de données comme indiqué:
CreateTableUsersL'exemple de script de requête crée deux tables: utilisateurs et articles. Le tableau des publications contient une colonne User_ID qui contient les valeurs du tableau des utilisateurs permettant des relations un à plusieurs dans la base de données.
SQL Server Cross s'applique
Essayons une jointure intérieure avec une table évaluée au tableau comme:
createFunction getPostsByid (@id int)SQL Server renvoie une erreur comme:
Pour résoudre ce problème, nous pouvons utiliser Cross Apply As:
Sélectionnez U.Nom d'utilisateur, P.id, p.Post_name, P.pub_dateLa requête ci-dessus doit s'exécuter avec succès et renvoyer le résultat comme:
SQL Server Extérieur Appliquer
Nous pouvons récupérer les lignes de la fonction physique et de la fonction à l'aide de l'application extérieure comme indiqué:
Sélectionnez U.Nom d'utilisateur, P.id, p.Post_name, P.pub_dateL'ensemble de requête résultant est comme indiqué:
Conclusion
Cet article couvre comment travailler avec les opérateurs externes et croisés de SQL Server pour rejoindre une table physique et une fonction de table évaluée.