Thread Zählen von Datensätzen auch nach Dependenzen (16 answers)
Opened by geloescht at 2012-09-26 10:37

geloescht
 2012-09-26 10:37
#162039 #162039
User since
2012-06-19
141 Artikel
BenutzerIn
[default_avatar]
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?

View full thread Zählen von Datensätzen auch nach Dependenzen