2013-10-14 3 views
1

Je suis en train de créer une nouvelle application Web et j'ai une connaissance de base des requêtes sql, mais je suis coincé dans cette requête particulière.Sous-requêtes SQL ou jointure interne?

Voici les deux tables que j'utiliserai cette requête. Le "followingID" dans le premier tableau pointe vers le "id" de la deuxième table.

dbo.T_FOLLOWING_GROUP 
-id 
-groupLookupID 
-followingID 
-order 

dbo.FOLLOWING 
-id 
-userID 
-followingID 

Je dois obtenir toutes les lignes dbo.FOLLOWING basées sur des valeurs connues que j'ai de « UserID » et « groupLookupID ».

Est-ce suffisamment d'informations sur lesquelles se fonder? Je sais qu'il ya des façons de faire

`SELECT * FROM dbo.FOLLOWING 
WHERE (insert select subquery here)` 

Ou est-il une sorte de inner join-je utiliser?

+0

Sur quelle partie êtes-vous exactement collé? Cela tomberait sous * la compréhension de base de sql *. – Khan

+0

Je suis coincé sur la façon de faire cela en une seule requête. À partir de mes connaissances actuelles, je voudrais séparer en deux requêtes différentes –

+0

Si vous "avez besoin d'obtenir toutes les lignes dans dbo.FOLLOWING sur la base des valeurs connues que j'ai de" userID "et" groupLookupID ".", Qu'est-ce que dbo.T_FOLLOWING_GROUP avoir à faire avec ça? –

Répondre

1

INNER JOIN

SELECT AnyTableName.AnyColumnName1, AnyTableName.AnyColumnName2, ..... --- out these two tables 
    FROM dbo.T_FOLLOWING_GROUP INNER JOIN dbo.FOLLOWING 
    ON dbo.T_FOLLOWING_GROUP.followingID = dbo.FOLLOWING.id 

Et vous pouvez ajouter la clause WHERE à la fin de Futher filtre le jeu de résultats

dans la requête

SELECT Column1, Column2, Column3, ........... 
FROM dbo.T_FOLLOWING_GROUP 
WHERE followingID IN (
         SELECT DISTINCT id FROM dbo.FOLLOWING 
        ) 
0

Pour avoir tous en une requête (en utilisant des jointures) essayez ceci:

SELECT f.* 
FROM dbo.FOLLOWING f 
LEFT JOIN dbo.T_FOLLOWING_GROUP fg on (f.id=fg.followingID) 
WHERE f.userID=xxx AND fg.groupLookupID=yyy 

(utilisez vos valeurs connues à la place de xxx et yyy).

+0

Pourquoi suggérez-vous une jointure externe? –

+0

Et si nous recherchions une ligne particulière de la table FOLLOWING qui n'a pas de ligne FOLLOWING_GROUP correspondante? Ce n'est qu'un échantillon avec lequel l'auteur de la question doit jouer (et l'ajuster à son propre cas d'utilisation) – promanski