Tabellenzeilen filtern

16/11/2009 - 10:56 von Andre Tann | Report spam
Hallo zusammen,

bin gerade dabei Perl zu lernen. Hauptsàchlich brauche ich es, um
größere Datentabellen zu manipulieren.

Folgende Aufgabenstellung möchte ich gerne lösen:

Tabelle/Datei A:

data1 data2 ID data3

Tabelle/Datei B:

ID

Die erste Tabelle enthàlt also tausende von Zeilen, die in einer Spalte
mittendrin eine eindeutige ID haben.
Die zweite Tabelle enthàlt nur eine Reihe von IDs.

Wie finde ich in der ersten Tabelle alle Zeilen, deren ID in Tabelle B
vorkommt?


Mich würde jetzt ein grob skizzierter Weg interessieren, wie man
vorgehen könnte, kein fertiger Code-Vorschlag. Den will ich mir selbst
erarbeiten.
Ist es sinnvoll, beide Tabellen zuerst in ein Array zu lesen und dann zu
manipulieren? Könnte bei umfangreichen Tabellen blöd sein.

Oder lese ich besser die erste Zeile von Tabelle A, dann sàmtliche
Zeilen von Tabelle B, dann die zweite Zeile von Tabelle A, dann wieder
sàmtliche Zeilen von Tabelle B? Scheint mir sehr teuer zu sein.

Freue mich über Ideen.

Andre Tann
 

Lesen sie die antworten

#1 Wolf Behrenhoff
16/11/2009 - 11:16 | Warnen spam
Andre Tann wrote:
Folgende Aufgabenstellung möchte ich gerne lösen:

Tabelle/Datei A:

data1 data2 ID data3

Tabelle/Datei B:

ID

Die erste Tabelle enthàlt also tausende von Zeilen, die in einer Spalte
mittendrin eine eindeutige ID haben.
Die zweite Tabelle enthàlt nur eine Reihe von IDs.

Wie finde ich in der ersten Tabelle alle Zeilen, deren ID in Tabelle B
vorkommt?


Mich würde jetzt ein grob skizzierter Weg interessieren, wie man
vorgehen könnte, kein fertiger Code-Vorschlag. Den will ich mir selbst
erarbeiten.



1. Lies Tabelle B komplett ein. In einen Hash, also jede ID als key.
Wert ist egal.
2. Lies Tabelle A zeilenweise ein. Finde die Spalte mit der ID und frage
mit Hilfe von exists ab, ob die ID in dem Hash vorkommt.

Wolf

PS: Viel Erfolg!

Ähnliche fragen