2010-08-12 7 views
3

J'ai 3 tables A, B et Cgauche Joignez-vous à la clause where

alt text

Je fais ceci: - /* Il n'y a pas de relation entre le tableau A et le tableau B. Le tableau A est juste utilisé pour fournir des valeurs à C.Profile */ 1ère étape) D < ---- Sélectionner * à partir de C où Profil = 1 // veut donner un ProID spécifique (je l'ai récupéré avec succès d'une table)

2ème étape) sortie < --- Sélectionnez B.sname, D.Status de B gauche JOIN D Sur B.ID = D.ID

de telle sorte que la sortie ressemble à la table de sortie requise ci-dessus: Puis-je le faire en utilisant une seule requête? Comment?

Répondre

3

Voulez-vous dire un sous-requête:

Select B.DirName,D.Status 
from B Left Join (
    Select * 
    from C 
    where ProId=1) As D 
On B.DirID=D.DirID 

Il est préférable d'utiliser une liste de champs plutôt que *

+1

Je pense que cela fonctionnera ... Grande .. – PrateekSaluja

+0

Combien Sélectionnent intérieure (à l'intérieur de pranthesis) imposer la charge au serveur de base de données? Est-ce une sorte de requête lourde ou DB va gérer très bien? – VSB