![]() |
Datenbank: firebird • Version: 1.5 • Zugriff über: ibx, ibexpert
result-table in sp umkehren
hallo,
sagt mal, gibt es eine möglichkeit, nach dem suspend aller ergebnis-einträge einer sp die ergebnismenge umzukehren, also dass genau die ausgewählten records zurückgegeben werden, nur in umgekehrter reihenfolge? danke, martin |
Re: result-table in sp umkehren
Also ich weiß nicht ob sich die Tabellen unterschiedlich verhalten, aber bei MySQL kann man einfach sagen
SQL-Code:
Also abwärts ordnen...ich weiß nicht ob du das suchst.
SELECT * FROM datenbank ORDER BY x DESC
Flare |
Re: result-table in sp umkehren
hi, auch ein leipziger :hi:
ja, das dachte ich zunächst auch: lege einfach alles in meine result-tabelle und dann ordne ich es andersherum aber das geht leider nicht; zumindest nicht bei firebird und im firebird-support-forum meinten die auch zu mir, dass man virtuelle tabellen nicht einfach ordnen kann; verständlich, schließlich sind virtuell erstellte tabellen ja nicht indiziert... bin mittlerweile dazu übergegangen, alles in der reihenfolge auszuwählen, wie ich's auch brauche, aber das is in meinem fall extrem umständlich und fehleranfällig :-( gruß von l.e. nach l.e. :lol: |
Re: result-table in sp umkehren
Wie führst du dien SPs aus?
|
Re: result-table in sp umkehren
Logisch geht das, solange du eben eine select-procedure hast, also:
select * from DEINE_PROZEDUR(PARAM1, PARAM2) order by FELD1 DESC FELD2 ASC keine Probleme damit. |
Re: result-table in sp umkehren
Zitat:
Negativ, das funktioniert nicht immer..manchmal kommt dabei völliger mist raus |
Re: result-table in sp umkehren
Also bei mir hat es bisher auch immer funktioniert.
|
Re: result-table in sp umkehren
Zitat:
|
Re: result-table in sp umkehren
also man stelle sich eine tabele dicentries vor
diese tabelle hat unter anderem 2 felder: asterm und id jetzt stelle man sich ein dbgrid vor, in dem 20 einträge sind...und zwar geordnet nach
SQL-Code:
wenn der user jetzt in dem grid nach oben scrollen will, sollen die vorherigen 20 einträge aus der tabelle gefetcht werden
order by asterm ascending, id ascending
das ganze geschieht, indem asterm und id vom obersten eintrag gelesen werden, und an eine sp mit namen get_prior_20 übergeben werden. diese sp sieht bei mir folgendermaßen aus:
SQL-Code:
wenn ich beispielsweise
CREATE PROCEDURE GET_PRIOR_20 (
ASTERMIN VARCHAR(80) CHARACTER SET WIN1252, IDIN BIGINT) RETURNS ( ASTERMOUT VARCHAR(80) CHARACTER SET WIN1252, IDOUT BIGINT) AS DECLARE VARIABLE CNT INTEGER = 0; begin for select first 20 id, asterm from dicentries where asterm = :astermin and id <= :idin order by asterm descending, id descending into idout, astermout do begin cnt = :cnt + 1; suspend; end for select first 20 id, asterm from dicentries where asterm < :astermin order by asterm descending, id descending into idout, astermout do begin if (cnt = 20) then exit; cnt = :cnt + 1; suspend; end end
SQL-Code:
aufrufe, bekomme ich die gewünschten einträge; nur eben in der falschen reihenfolge, denn im grid soll natürlich der zuerst gefetchte record an letzter stelle stehen...
select * from get_prior_20('ausdruck', 30)
bei dem versuch, die reihenfolge einfach umzukehren mittels
SQL-Code:
wird die reihenfolge nach einem mir nicht ersichtlichen prinzip durcheinandergebracht!
select * from get_prior_20('ausdruck', 30) order by asterm ascending, id ascending
|
Re: result-table in sp umkehren
Welche Komponente verwendest du? warum nimmst du nicht die Limitierung des DB-Servers?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz