J'ai deux auteurs de tables SQL Server, et des articles où la clé primaire des auteurs (AuthorID) est une clé étrangère dans la table des articles pour représenter une simple relation un-à-plusieurs entre les auteurs et les articles. Maintenant, voici le problème, je dois publier une recherche de texte intégral sur la table des auteurs en fonction des prénoms, des noms et des colonnes de la biographie. La recherche en texte intégral fonctionne génial et classement et tout. Maintenant, j'ai besoin d'ajouter un critère supplémentaire à ma recherche, j'ai besoin que tous les contributeurs non-articles soient ignorés de la recherche. Pour y parvenir, j'ai choisi de créer une vue avec tous les contributeurs qui ont des articles et de chercher dans cette vue. Donc, j'ai créé la vue de cette façon:
Sélectionner uniquement les auteurs qui ont des articles?
Create View vw_Contributors_With_Articles
AS
Select * from Authors
Where Authors.ContributorID
IN (Select Distinct (Articles.ContributorId) From Articles)
Il travaille, mais je n'aime vraiment pas la chose sous-requête. La jointure m'obtient tous les authorIDs redondants, essayé distinctement mais n'a pas fonctionné avec la colonne de biographie car c'est le type est ntext. Grouper par ne le ferait pas pour moi parce que j'ai besoin de toutes les colonnes pas un ensemble d'entre eux.
Que pensez-vous les gars? Comment puis-je améliorer cela?
La sous-sélection devrait être écrite comme 'select 1 from articles ...'. Vous ne voulez rien retirer du backend, vous voulez juste savoir si quelque chose est là. – dland
@dland: Ceci est un mythe. NULL, 1, ou *: pas de différence avec le plan. – gbn
@ gbn- +1, en particulier sur le mythe de SELECT 1. – RichardOD