0

Möglicherweise verschleifte DB-Abfrage

Hallo, ich habe für eine Tabelle in unserer Datenbank (cloud Version) zusätzliche Formel-Spalte erstellt, wo im Code diese Abfrage entscheidende Rolle spielt:

unique((select Kontobuchungen)[Kontierung.Buchungskonto != **** and Konto.Konten.IBAN = curr_IBAN and Datum >= start_date and Datum <= book_date].(Treugeber.Treugeberkuerzel + ";" + Treugeber.Treugeber + ";" + Betrag + ";" + Programm.Programme.Programm + ";" + Belegnummer + ";" + Datum + ";" + Kontierung.Buchungskonto))

Die Tabelle Kontobuchungen hat Verknüpfung N:1 zu der Tabelle, wo ich die Formel ausgebe, Konto, Kontierung und Treugeber sind im Gegenzug die schon mit Kontobuchungen N:1 verknüpften Tabellen. Für kleine Datensatzanzahl (etwa 100) in Kontobuchungen funktioniert die Formel noch korrekt, aber für eine große Datensatzanzahl, 1000 und mehr, verwandelt sich die Abfrage in eine endlose Schleife. Meine Frage ist, ob so eine Abfrage überhaupt korrekt aussieht oder hat falsche Syntax diese Situation verursacht? Danke im Voraus für mögliche Antworten und Ideen.

5 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Dmitry,

    Wenn die Tabelle Kontobuchungen N:1 verknüpft ist, dann erwaterst du eigentlich nur einen Datensatz als Ergebis. Wenn JA, dann würde ich die unique und select weglassen. Die Filterbedingungen sind dann IMHO überflüssig:

    ---

    Kontobuchungen.(Treugeber.Treugeberkuerzel + ";" + Treugeber.Treugeber + ";" + Betrag + ";" + Programm.Programme.Programm + ";" + Belegnummer + ";" + Datum + ";" + Kontierung.Buchungskonto))

    ---

    Allgemein ist es tätsächlich so, dass die select anweisungen als Spalten bei mehreren 1000 Datensätzen zu Performance-Problemen führen

     

    Leo

    • dmitrykutuzov
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid, danke für Ihre Antwort. Leider liefert der geänderte Ausdruck nur "undefined" Wert und die Filterbedingungen sehr wichtig sind, aber sie funktionieren natürlich nur mit select-Anweisung. Bedeutet das, dass es in meinem Fall keine Lösung gibt?

    • dmitrykutuzov
    • vor 3 Jahren
    • Gemeldet - anzeigen

     Ich habe die Einschränkungen für diese verknüpfte Tabelle angepasst. Wenn ich im Formular auf das leere Feld Kontobuchungen klicke, werden 7 richtig gefilterte Datensätze angezeigt, aber es umöglich ohne Zuweisung oder ohne select sie zuzugreifen. Ich brauche aber die Summe der Werte eines entsprechenden Feldes von Kontobuchungen. Wenn es ohne select Abfrage nicht funktioniert, wäre es möglich die Summe irgenwie anders zu kriegen?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Dmitry,

    mit unique bekommst du ein Array zurück. Gibt es mehrere Kontobuchungen mit deinen Bedingeungen?

    Leo

    • dmitrykutuzov
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, es gibt mehrere Kontobuchungen für eine einzelne IBAN. Aber ich habe das Problem hoffentlich gelöst : erstens habe ich unique weggelassen, zweitens habe ich festgestellt, dass in der Ninox DB gab es ein altes Skript, der noch schlimmer ausgesehen hatte, als dieses da oben. Ohne unique funktioniert alles relativ schnell. Danke abermals, Leonid.