User since
2003-09-19
23
articles
BenutzerIn
In einer Abfrage wird nach einer Spalte sortiert. Jetzt möchte ich aber nicht mehr alle Einträge haben, sonder immer nur die ersten zN. 10 innerhalb der sortierten Spalte... klar was ich meine?!? Hat jemand da eine Lösung parat?
Gruß
D.
User since
2003-08-04
1706
articles
HausmeisterIn
Ich nehme an du suchst eine SQL Abfrage
[sql]SELECT spalte FROM tabelle ORDER BY spalte LIMIT 10[/sql]
So??
Gruss Alex
User since
2003-09-19
23
articles
BenutzerIn
Das wär schön.
Diese Abfrage sucht mir unter allen zurückgegebenen Spalten die ersten zehn zurück.
Ich brauche aber eine Abfrage die innerhalb der sortierten Spalte immer dann wenn ein neuer Eintrag beginnt 10 Zeilen liefert und dann den nächsten Eintrag sucht.
Also in etwa so:
a b c
-----
176
197
145
156
296
220
244
258
293
232
336
387
356
335
345
367
Jetzt werden aus Spalte a immer nur die obersten drei der Tupel geliefert die mit 1, 2, 3 usw. anfangen.
a b c
-----
176
197
145
296
220
244
336
387
356
Jetzt klar?
D.
User since
2003-08-04
1706
articles
HausmeisterIn
Ne noch nicht so ganz. Ich kann nur ähnen. Mach mal n Beispiel bei welchen Daten du was haben willst und welche Spalten, welche werden sortiert?
Gruß Alex
User since
2003-09-19
23
articles
BenutzerIn
s.o.
Nach Spalte a wird sortiert (sie enthält 1,2,3)
Zurückgeliefert werden nur die ersten drei Einträge die eine 1 in Spalte a haben, dann die ersten drei Einträge, die eine 2 in Spalte a haben und die ersten drei Einträge die eine 3 in Spalte a haben.
Klaro? ;)
D.
User since
2003-08-04
14371
articles
ModeratorIn
Wenn ich das Problem richtig verstanden habe, wirst Du es im (Perl-)Programm lösen müssen...
User since
2003-08-04
1706
articles
HausmeisterIn
Vielleicht irgendwie so?
my $limit = 3;
my $curr = 0;
my $type = '';
while (my @row = $sth->fetchrow_array()) {
if (++$curr > $limit && $type eq $row[0]) {
$curr = 0;
next;
}
$type = $row[0];
print @row,"\n";
}
Gruß Alex\n\n
<!--EDIT|format_c|1127733192-->