Thread Zählen von Datensätzen auch nach Dependenzen
(16 answers)
Opened by geloescht at 2012-09-26 10:37
Morgen Forum
Ich brauche für ein Datenverwaltungsprogramm beim Menüpunkt Statistik verschiedene Zahlenwerte, die ich aus der Datenbank holen muss. Es fängt dabei ganz einfach an. Es gibt eine DB mit Namen kunden.csv, welche so gegliedert ist: Code (perl): (dl
)
1 2 kdnummer,kddatum,kdfirma,kdstrasse,kdhausnummer,kdplz,kdort,kdland,kdansprechpartner,kdtelefon,kdfax,kdemail 100100,20120917,MaxPower,Maxalle,19,79618,Rheinfelden,D,"Herr Kamikaze","07621 / 123-0","07621 / 123-1",info@maxpower.de Man sieht, dass die erste Zeile den Spaltenkopf darstellt, dann folgen die einzelnen Felder. Hier könnte ich recht simpel mit "open-file-Lesezugriff->Zähle mit while bis endof file / Betrag minus eins (Kopfdatensatz)" arbeiten. Aber da weiter unten in der Statistik Werte nach Abhängigkeiten gezählt werden sollen, ist es wohl besser, ich lerne zählen innerhalb einer DB. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 %zuordnung=( kunden => { file => 'kunden.csv', col_names => ['kdnummer', 'kddatum', 'kdfirma', 'kdstrasse', 'kdhausnummer', 'kdplz', 'kdort', 'kdland', 'kdansprechpartner', 'kdtelefon', 'kdfax', 'kdemail'], }, ); # Verbindung aufbauen $dbh = DBI->connect("DBI:CSV:", undef, undef, { # Zeilenseparator csv_eol => "\x0A", # Spaltenseparator: csv_sep_char => ",", # Verzeichnis mit den Dateien f_dir => $Bin, # Zuordnung Dateiname -> Tabelle csv_tables => \%zuordnung, # bei Fehlern immer sterben: RaiseError => 1, } ) or die($DBI::errstr); $sth=$dbh->prepare("SELECT * FROM kunden WHERE kdfirma LIKE '\%$kdfirma\%'"); $sth->execute(); Dieser Code war für "Kunde suchen nach Name". Ich denke bis zu dieser Stelle "SELECT * FROM kunden" kann man das übernehmen. Das Where brauch ich nicht, da ich ja alle Datensätze zählen will. Wie gesagt, in einer DB hab ich noch nie gezählt - Dateien hingegen schon. Einen Tip, wie die DB-Anfrage lauten müsste? Hat das einer schon mal gemacht? Gruss HP-User Past brought us "SYS 64738". Present brought us "ctrl+alt+del". But what will future bring?
|