2009-03-30 6 views
2

Est-il possible d'obtenir les lignes communes dans deux requêtes différentes? Dites qu'une requête renvoie 30 lignes, et une autre renvoie 100. Mais il n'y a que 17 lignes qui ont les mêmes identifiants ... il y a deux colonnes, dites QuestionID et Réponse .. J'ai été invité à répondre aux mêmes questions par deux utilisateurs. J'apprécierais si je peux faire ceci du côté de SQL avant de commencer foreachs. NET. Merci d'avanceObtention de lignes communes à partir de deux requêtes différentes dans SQL Server

Répondre

1

Cet exemple utilise IN dans une corrélation (ou à répétition) sous-requête, qui est une requête qui dépend de la requête externe pour ses valeurs. Il est exécuté à plusieurs reprises, une fois pour chaque ligne pouvant être sélectionnée par la requête externe. Cette requête récupère une instance de prénom et le nom de chaque auteur pour lequel le pourcentage de redevances dans la table titleauthor est 100 et pour lequel les numéros d'identification de l'auteur match les auteurs et titleauthor tables.

UTILISATION pubs

SELECT DISTINCT au_lname, au_fname

FROM auteurs

OU 100

(SELECT royaltyper 

FROM titleauthor 

WHERE titleauthor.au_id = authors.au_id) 

Extrait de: http://doc.ddart.net/mssql/sql70/sa-ses_4.htm

1

INTERSEC T peut être ce que vous cherchez. Voir MSDN pour plus de détails. Si vous ne pouvez pas satisfaire aux exigences de l'intersection, pensez à JOIGNEZ les deux résultats ou utilisez la clause EXISTS. Ou créez l'UNION des deux résultats, GROUPez les lignes par question id et COUNT les lignes par groupe retournant seulement les groupes avec plus d'une ligne.

0

Vous devriez nous fournir la structure de table pour nous aider à vous donner une meilleure réponse.
Voici mon coup de poignard:

SELECT * 
FROM dbo.Questions q 
    INNER JOIN dbo.Answers a ON a.QuestionID = q.QuestionID 
Questions connexes