2011-01-19 3 views
2

J'ai un trois tablessélectionnez requête SQL

tableau 1 - colonnes clés p1, p2
Tableau 2 - colonnes clés p1, STATUS
tableau 3 - colonnes clés p2, STATUS

Dans le tableau 1, si p1 est 0, alors p2 aura une valeur. mais pas l'inverse. Si p1 est là, alors je dois vérifier l'état dans le tableau 2, sinon je dois vérifier l'état dans le tableau 3.

Maintenant, j'ai besoin de sélectionner le nombre de lignes trouvées qui ont un statut en attente dans l'un des tableaux 2 et 3 du tableau 1.

Veuillez nous aider. merci d'avance

+1

Est-ce un devoir? – ykatchou

+0

Je voudrais poser des questions sur la structure des données - semble un peu étrange. À quoi l'utilisez-vous? – diagonalbatman

+0

la table 1 a deux enfants, table 2 et 3. quand vous créez une rangée pour aujourd'hui, elle ira à la table 2. si vous programmez une rangée pour la table 2, vous obtiendrez l'entrée dans la table 3. quand le jour programmé vient, table 2 aura aussi des données. – Vaandu

Répondre

1
SELECT CASE p1 WHEN 0 THEN t2.status ELSE t3.status END 
FROM t1 
LEFT JOIN 
     t2 
ON  t2.p1 = p1 
LEFT JOIN 
     t3 
ON  t1.p1 = 0 
     AND t3.p2 = t1.p2 
+0

Cela a fonctionné, merci :) – Vaandu