schau, der sinn der ganzen abfrage ist folgender:
ich muss in dem programm UNBEDINGT das dbgrid beibehalten..macht sich bei
sql natürlich schwer; also war mein ausweg: immer genau 20 datensätze holen und wenn der benutzer bild-up oder -down drück, die vorherigen oder nächsten zwanzig holen...also wird das select-
sql-statement immer wieder neu generiert
das
sql-statement von dem du redest ist ein beispiel, wo der user grad nach dem record sucht, wo asterm = peter...mein ziel ist, dass der benutzer dan folgendes zurückbekommt im grid:
-zuerst den eintrag (falls vorhanden), der in der datenbank genau VOR 'peter' kommt
-dann (falls vorhanden) 'peter'
-dann sortiert alle weiteren, die nach 'peter' kommen
..und insgesamt zwanzig..also wie in nem richtigen grid, in dem sich 'alle`datensätze befinden...
jetzt verständlicher?
ps: ein einzelnder record wird ausgewählt mit:
SQL-Code:
select d.id, d.asterm, d.asabk, d.asprgm, d.assem, d.zsterm, d.zsabk, d.zsprgm, d.zssem, d.datum, d.proj, d.rev, d.upddatum, d.asdef, d.zsdef, d.asaudio, d.asvideo, d.asabbildung, d.zsabbildung, d.zsaudio, d.zsvideo, asmain.asterm as asverw, zsmain.zsterm as zsverw, a.aut as aut, ua.aut as updaut, aslit.qcode as asqcode, zslit.qcode as zsqcode
from dicentries d
left join dicentries asmain on d.asverw = asmain.id
left join dicentries zsmain on d.zsverw = zsmain.id
left join aut a on d.aut = a.id
left join aut ua on d.updaut = ua.id
left join lit aslit on d.asqcode = aslit.id
left join lit zslit on d.zsqcode = zslit.id
where ...
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.