Schrift
[thread]5897[/thread]

Ergänzung zur Gruppenverarbeitung und neue Frage



<< >> 5 Einträge, 1 Seite
Gast Gast
 2003-11-11 18:41
#71233 #71233
Hallo nochmal,

Danke für die schnelle und super Hilfe bei der Gruppenverarbeitung.
Aber schon tauch mein nächstes Problem auf.
Mein Quellcode sieht jetzt folgendermassen aus:

my $daten;
for (@tables_and_fields)
{
my ($a, $b) = split(/\./, $_);
push @{$daten->{$a}}, $b;
}

my @sort_array;
for (keys (%$daten))
{
push (@sort_array,"$_ @{$daten->{$_}}"); # Tabellen
# print $_,"\n";
# print "--", $_, "\n" for (@{$daten->{$_}});
}
# print "@sort_array\n";

for (my $zaehler = 0; $zaehler < @sort_array; $zaehler++)
{
print "$sort_array[$zaehler]\n";
}

Jedes Arrayelement besteht jetzt aus der Tabelle und den dazugehörigen Feldern.
Sieht so aus: Tabelle1 Spalte1 Spalte2 Spalte3 (1. Array Element)

Aber wie kann ich jetzt ein select auf eine Oracle-DB machen?
Denn ich weiss ja nicht, wieviele Spalten die Tabelle hat!

Der erste Schritt ist wieder nach dem Leerzeichen splitten.
Aber das weiss ich schon nicht. Wie das geht.
Und dann muss ich die Anzahl der restlichen Spalten ermitteln, um ein select machen zu können
Der select sollte dann so aussehen:
select $item[1]...$item[X] from $item[0] (@item siehe unten.)

Folgendes hab ich mir überlegt:
.
.
.
@item = split("Leerzeichen", $sort_array[$zaehler]);

$sql = qq{ select $item[1]...$item[X] from $item[0]};
$sth = $dbh->prepare( $sql ) or die "Couldn't prepare statement: " . $dbh->errstr;

$sth->execute() or die "Couldn't execute statement: " .$sth->errstr;
$dbh->disconnect();
.
.
.
Ist das auch möglich?

Gruss,

Markus
Crian
 2003-11-11 18:55
#71234 #71234
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Hättest Du meinen Ansatz genommen, so hättest Du zu jeder Tabelle ein Array mit den Spalten, und würdest mit scalar ARRAY die Anzahl der Elemente erhalten.
Wenn Du jetzt wirklich den Tabellennamen jeweils als erstes Element drin hast, nimm halt scalar @array - 1.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Crian
 2003-11-11 18:56
#71235 #71235
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
ach ja, Splitten nach Leerzeichen geht mit split / / oder split /\s/ (für splitten nach Whitespace)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Ronnie
 2003-11-11 19:12
#71236 #71236
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,11.11.2003, 17:55]Hättest Du meinen Ansatz genommen, so hättest Du zu jeder Tabelle ein Array mit den Spalten, und würdest mit scalar ARRAY die Anzahl der Elemente erhalten.[/quote]
Was spricht gegen: scalar(@{$daten->{$_}})

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use warnings;
use strict;

my $daten;
my @tables = qw(Tabelle1.Spalte1 Tabelle1.Spalte2 Tabelle1.Spalte3
Tabelle2.Spalte1 Tabelle2.Spalte2 Tabelle2.Spalte3
Tabelle3.Spalte1);

for (@tables) {
my ($a, $b) = split(/\./, $_);
push @{$daten->{$a}}, $b;
}

for (keys (%$daten)) {
print "Groesse des Arrays für $_: ", scalar(@{$daten->{$_}}), "\n";
print $_,"\n";
print "--", $_, "\n" for (@{$daten->{$_}});
}

exit();


Allerdings habe ich den Eindruck das Markus Problem eher ein DBI Unkenntniss Problem ist, oder?
Crian
 2003-11-12 11:13
#71237 #71237
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=Ronnie,11.11.2003, 18:12][quote=Crian,11.11.2003, 17:55]Hättest Du meinen Ansatz genommen, so hättest Du zu jeder Tabelle ein Array mit den Spalten, und würdest mit scalar ARRAY die Anzahl der Elemente erhalten.[/quote]
Was spricht gegen: scalar(@{$daten->{$_}})
[/quote]
Stimmt... die lieferst Du ja auch *g
Ich war verwirrt von seiner Aussage

Quote
Jedes Arrayelement besteht jetzt aus der Tabelle und den dazugehörigen Feldern.
Sieht so aus: Tabelle1 Spalte1 Spalte2 Spalte3

...

[quote=Ronnie,11.11.2003, 18:12]Allerdings habe ich den Eindruck das Markus Problem eher ein DBI Unkenntniss Problem ist, oder?[/quote]
Hmmm weiß ich nicht :-)\n\n

<!--EDIT|Crian|1068628560-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2003-11-11 18:41.