2010-11-30 2 views
0

sqlite3Retour colonne indiquant l'existence de ligne dans une autre table

J'ai deux tables, Table1 et Table2.

Ces deux tables ont une colonne appelée Nom.

Je voudrais interroger Table2 et retourner la colonne Nom. En outre, je voudrais retourner une colonne contenant les valeurs 1 ou 0 selon que les lignes de Table1 contiennent également la même valeur pour Name.

Quel est le moyen le plus efficace de faire cela?

Je cherche quelque chose comme:

SELECT 
    Name, IF EXISTS (SELECT * FROM Table1 WHERE Table1.Name = Table2.Name) 1 ELSE 0 
FROM 
    Table2 

Répondre

1

Désolé, je ne suis pas très familier avec SQLite, mais cela devrait fonctionner pour vous. L'astuce est une jointure extérieure gauche et une comparaison sur la table jointe.

SELECT 
    Table2.Name, 
    CASE WHEN Table1.Name IS NOT NULL THEN 1 ELSE 0 END 
FROM 
    Table2 
LEFT OUTER JOIN 
    Table1 ON Table1.Name = Table2.Name 

Je ne suis pas sûr que la syntaxe CASE est le meilleur, mais si vous êtes plus familier avec les conditions dans les SQLite, vous pouvez nettoyer cette partie vers le haut.

+0

J'ai tout oublié sur CASE! Je vous remercie! – Andrew

Questions connexes