ORDER BY ist eingeschränkt



  • Wenn ich im Report-Manager einen Report erstelle, der ein 'ORDER BY' Statement enthält, kann als Spalte nur 'count' (ohne Anführungszeichen) angegeben werden, ansonsten funktioniert der Report zwar in der Vorschau, nicht aber bei der eigentlichen Ausführung. Kann man das ändern, so daß beliebige Sortierkriterien angeben werden können? Version ist 1.7.1


  • i-doit Kenner

    Hallo atikart,

    kommt bei der Ausfuehrung eine Fehlermeldung?
    Ist das Verhalten in der Demo reproduzierbar? Vielleicht kannst Du einen entsprechenden Report in der Demo anlegen, damit wir uns das anschauen koennen?
    demo.i-doit.com

    Gruss,
    jkondek



  • Der Fehler kommt dadurch zustande, daß i-doit vor der eigentlichen Reportausführung eine Abfrage "(select Count (*) as count)" mit der selben where Clause ausführt. Sobald der Where-Clause ein "ORDER BY xxx" folgt, wirft diese Vorabfrage ein "Column not found in ORDER BY" aus.

    Beispiel:
    SELECT
    obj_main.isys_obj__title AS MyColumn1,
    j1.isys_catg_ip_list__hostname AS MyColumn2

    FROM isys_obj AS obj_main
    LEFT JOIN isys_catg_ip_list AS j1 ON j1.isys_catg_ip_list__isys_obj__id = obj_main.isys_obj__id

    WHERE ( (j1.isys_catg_ip_list__primary = '1' ) )
      AND ( (obj_main.isys_obj__status = '2' ) )

    ORDER BY MyColumn1;


  • i-doit Kenner

    Hallo atikart,

    Du musst einfach nach "obj_main.isys_obj__title" sortieren, anstatt nach der Bezeichnung, wie Du das Feld benannt hast. Dann funktioniert die Abfrage.

    Alternativ:
    Um den Report eine weitere SELECT-Abfrage drum bauen, in welcher dann das ORDER BY auf die von Dir gewaehlten Feld-Bezeichnung ausgefuehrt werden kann.

    Gruss,
    jkondek



  • Das Verwenden von verschachtelten Selects SQL bringt leider keine Hilfe, da in der Vorabfrage beide SELECTs durch ein "Select Count (*) as count" ersetzt werden (siehe Screenshot). Das Verwenden des echten Spaltennamens funktioniert zwar bei obigen Beispiel, läuft aber spätestens dann gegen die Wand, wenn ich eine UNION-Anweisung verwende und daher der echte Spaltenname nicht eindeutig ist.

    Auf jeden Fall möchte ich mich für die schnelle Reaktion bedanken.

    CMDB1.png


  • i-doit Kenner

    Hallo atikart,

    das "SELECT COUNT(*)" kommt eigentlich nur, weil ein Fehler im SQL vorhanden ist.
    Kannst Du mal Dein verschachteltes SQL posten?

    Gruss,
    jkondek


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.