2012-10-16 3 views
0

Il existe sur mon lieu de travail un outil horrible qui a été mis à jour/corrigé pour fournir des informations à une base de données SQLite. Personne ne veut toucher à l'arrière du système, et je ne sais pas assez pour creuser dedans - pas mon problème. Voici mon problème cependant:Comparaison de plusieurs tables

J'ai une base de données SQLite, avec un certain nombre de tables. Chaque table représente un jour et contient toutes les pistes de bus, tels que mentionnés par exemple:

| Direction | Time | RunNumber | StopIndex | 
---------------------------------------------- 
| In  | 6:30 |  1  |  1  | 
| In  | 6:35 |  1  |  2  | 
| In  | 6:40 |  1  |  3  | 
| In  | 6:45 |  1  |  4  | 
| In  | 7:30 |  2  |  1  | 
| In  | 7:35 |  2  |  2  | 
| In  | 7:40 |  2  |  3  | 
| In  | 7:45 |  2  |  4  | 
| Out | 6:40 |  1  |  1  | 
| Out | 6:45 |  1  |  2  | 
| Out | 6:50 |  1  |  3  | 
| Out | 6:55 |  1  |  4  | 

Quelques jours peuvent avoir que les autres plus de courses. Le nombre d'arrêts sera le même pour toutes les tables.

La définition de l'égalité est que la direction et l'heure sont les mêmes. Chaque exécution est traitée comme un ensemble - si l'une des durées d'un arrêt diffère, la totalité de l'exécution doit être fusionnée dans une table.

Ma question est:

Quelle serait la meilleure façon, étant donné une liste de tables, pour générer une autre table qui contient des valeurs qui ne sont pas présentes sur toutes les tables données? Cela peut être fait sur le côté SQLite, ou par C# .NET 4.0.

En réalité, je n'ai besoin que de connaître le numéro d'exécution qui diffère, afin de pouvoir l'extraire ultérieurement et le placer dans une feuille de calcul Excel, si cela facilite la tâche.

Répondre

0

Essayez d'utiliser EXCEPT. Par exemple, la requête suivante répertorie toutes les lignes qui existent dans Table1 mais qui n'existent pas dans Table2:

SELECT Direction, Time, RunNumber, StopIndex 
FROM Table1 
EXCEPT 
SELECT Direction, Time, RunNumber, StopIndex 
FROM Table2 
+0

Existe-t-il un moyen de le faire sur un critère moins sélectif? Mon problème est que n'importe où dans la table, un autre déclenchement peut être inséré, ce qui provoque alors le RunNumber à n + 1 pour chaque voyage suivant. L'utilisation de cette méthode provoque le retour de chaque ligne après l'addition, car le numéro d'exécution est n + 1 (ou bien plusieurs passages ont été insérés). – HeWhoWas

Questions connexes