Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10386[/thread]

MySQL: Längsten Wert finden



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Gast Gast
 2007-09-13 14:56
#99418 #99418
Hallo,
ich habe bereits eine Weile danach gesucht, aber nichts konkretes gefunden.

Wie finde ich in einer Datenbank, den längsten Wert (pro Spalte)?
Und wie kann ich ihn am besten auslesen?



Ich will eine Ausgabe etwas formatieren (Tabelle). Dazu bräuchte ich den längsten Eintrag...
renee
 2007-09-13 15:13
#99422 #99422
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Meinst Du so etwas:[sql]SELECT MAX(CHAR_LENGTH(spaltenname)) FROM tabelle[/sql]?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-09-13 15:44
#99424 #99424
Ja, das mit max() habe ich schon gefunden.
char_length() war mir nicht bekannt, hilft mir jedoch minimal.

Mein Problem ist jetz, dass ich nicht weiss wie ich am besten an den Wert komme?
Ich bräuchte die MAX-Werte von 3 Spalten... Wie macht man sowas am geschicktesten mit Perl?
renee
 2007-09-13 15:48
#99425 #99425
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Willst Du das innerhalb von Perl lösen oder willst Du das mit SQL lösen.

Wenn Du das mit SQL lösen willst, musst Du das mit MAX und CHAR_LENGTH für alle drei Spalten machen.

Wenn Du das mit Perl lösen möchtest, dann wäre es wichtig zu wissen, wie Deine Daten vorliegen.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pixelflat
 2007-09-13 15:54
#99429 #99429
User since
2007-09-13
15 Artikel
BenutzerIn
[default_avatar]
Am besten innerhalb von Perl.

Die Tabelle sieht ungefähr so aus:
Code: (dl )
1
2
3
Name:     IP1:      IP2:
asdf 1.1.1.1 2.2.2.2
Horst 3.3.3.3 4.4.4.4



Das ganze möchte ich in der Konsole in einer Tabelle ausgeben. Und für die Spaltenbreite bräuchte ich den längsten Wert...
renee
 2007-09-13 15:55
#99430 #99430
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wie sieht die Datenstruktur aus, in der Du die Daten speicherst? Ein wenig Code wäre nicht schlecht...

Um die Länge eines Strings in Perl zu bestimmen, gibt es die Funktion "length"

Code (perl): (dl )
 print length("String");
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pixelflat
 2007-09-13 16:02
#99433 #99433
User since
2007-09-13
15 Artikel
BenutzerIn
[default_avatar]
Die Daten kommen von einer Datei und werden mit mysqlimport eingefügt.
Die Datei enthält dann mit Semikolon getrennte Werte...

Brauchst du den SQL-Code mit dem die Tabelle erstellt wird? o.O

Die maximale Länge habe ich bereits folgenderweise ermittelt (für 3 Spalten):
Code: (dl )
1
2
3
4
5
6
while(my @row = $sth->fetchrow_array())
{
if( $max0 < length($row[0]) ) { $max0=length($row[0]) }
if( $max1 < length($row[1]) ) { $max1=length($row[1]) }
if( $max2 < length($row[2]) ) { $max2=length($row[2]) }
}

In $max wurden dann die Werte gespeichert.

Ich dachte allerdings, dass man mit SQL gleich den längsten/größten Wert auslesen kann.
Wenn ich folgenderweise vorgehe:
Code: (dl )
SELECT max(Spalte) as maximum FROM Tabelle GROUP BY Spalte

...weiss ich nicht, wie ich auf den Wert zugreifen kann.
renee
 2007-09-13 16:08
#99434 #99434
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
my $stmt = "SELECT MAX(CHAR_LENGTH(spalte1)), MAX(CHAR_LENGTH(spalte2)), MAX(CHAR_LENGTH(spalte3)) FROM tabelle";
my $sth = $dbh->prepare( $stmt ) or die $dbh->errstr;
$sth->execute or die $dbh->errstr;

my ($max_row1, $max_row2, $max_row3) = $sth->fetchrow_array;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pixelflat
 2007-09-13 16:21
#99436 #99436
User since
2007-09-13
15 Artikel
BenutzerIn
[default_avatar]
Danke, funktioniert einwandfrei...

//Edit
Noch was... gibts denn eine einfache Funktion, mit der man die Max-Werte von jeder in der Tabelle enthaltenen Spalte bekommt?
Sprich, bei 3 Spalten hab ich 3 Werte - bei 4 Spalten 4...
renee
 2007-09-13 16:31
#99437 #99437
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
pixelflat+2007-09-13 14:21:15--
[...]
Noch was... gibts denn eine einfache Funktion, mit der man die Max-Werte von jeder in der Tabelle enthaltenen Spalte bekommt?
Sprich, bei 3 Spalten hab ich 3 Werte - bei 4 Spalten 4...

Da bin ich ehrlich gesagt überfragt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-09-13 14:56.