2010-08-16 4 views
1

Je ne suis pas tout à fait sûr de savoir où/quoi rechercher - donc des excuses si c'est une chose triviale qui a déjà été demandé!sqlite requête SQL pour les lignes non traitées

J'ai deux tables dans SQLite:

table_A = [id, value1, value2] 
table_A$foo = [id, foo(value1), foo(value2)] 
table_A$bar = [id, bar(value1), bar(value2)] 

Où foo()/bar() sont des fonctions arbitraires pas vraiment pertinentes ici

Maintenant en ce moment, je fais:

select * from table_A 

Et utilisez ce curseur pour calculer toutes les lignes pour chacune des tables dérivées. Si quelque chose ne va pas (ou j'ajoute de nouvelles lignes à table_A), je voudrais un moyen de pouvoir calculer (dans SQL, plutôt que dans python) quelles lignes sont déjà présentes dans table_A$foo etc et donc il suffit de sélectionner le reste (donc comme un ET NON) pour calculer foo() et bar() - je devrais être en mesure de le faire sur l'ID col, car ceux-ci restent les mêmes. Je me demande s'il y a un moyen de le faire en sqlite, ce qui, je pense, serait plus rapide que d'essayer de monter ceci en python.

Merci beaucoup!

Répondre

1

Je ne comprends pas si vous considérez un match basé sur des colonnes de valeur1 correspondant, ou une combinaison des trois colonnes ...

avec exists pour trouver ceux qui sont déjà présents:

SELECT * 
    FROM TABLE_A a 
WHERE EXISTS(SELECT NULL 
       FROM TABLE_A$foo f 
       WHERE a.id = f.id 
       AND a.value1 = f.value1 
       AND a.value2 = f.value2) 

avec exists pour trouver ceux qui sont pas présent:

SELECT * 
    FROM TABLE_A a 
WHERE NOT EXISTS(SELECT NULL 
        FROM TABLE_A$foo f 
        WHERE a.id = f.id 
        AND a.value1 = f.value1 
        AND a.value2 = f.value2) 
+0

brillant! Merci beaucoup! – malangi

Questions connexes