Ankündigung

Einklappen
Keine Ankündigung bisher.

ORDER BY mal komplizierter

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Gut, jetzt verstehe ich gar nicht mehr, wie die Sortierung der Ergebnisausgabe zustande kommt. Konkret die Frage: Welche Spalten sind beteiligt, damit die Ergebnismenge so sortiert wird. Am Besten mit einem Beispiel und nur den relevanten Spalten.

    - laufplan im Zusammenhang mit
    - fahrnummerAnfang und
    - ??


    Grüße
    Thomas

    Kommentar


    • #17
      Ich melde mich heute abend wieder.

      Grüße
      Thomas

      Kommentar


      • #18
        ---------------
        Datengrundlage Auszug

        laufplan - fahrtnummerAnfang

        Code:
        61101  - K
        61101  - K
        61101  - 15369
        REB218 - 15369
        61101  - 15371
        61202  - 15734
        REA146 - 15734
        REB423 - 6038
        61303  - 6038
        REA423 - 8003
        ---------------
        Sortierung nach laufplan

        Code:
        61101  - K
        61101  - K
        61101  - 15369
        61101  - 15371
        61202  - 15734
        61303  - 6038
        REA146 - 15734
        REA423 - 8003
        REB218 - 15369
        REB423 - 6038
        ---------------
        ABER: Gruppierung nach fahrtnummerAnfang

        Code:
        61101  - K
        61101  - K
        61101  - 15369
        REB218 - 15369 (wurde verschoben)
        61101  - 15371
        61202  - 15734
        REA146 - 15734 (wurde verschoben)
        61303  - 6038
        REB423 - 6038  (wurde verschoben)
        REA423 - 8003

        Kommentar


        • #19
          a) zu Sortierung nach Laufplan, habe ich folgenden Query mit diesem Ergebnis, basierend auf den 8 Rows der Testdaten aus #13

          Code:
          SELECT st.laufplan, st.fahrtnummerAnfang
            FROM sample_table st
            LEFT JOIN ( SELECT fahrtnummerAnfang, COUNT(*) AS anzahl, MIN(laufplan) AS laufplan
                          FROM sample_table
                         GROUP BY fahrtnummerAnfang
                        HAVING COUNT(*) > 1 
                      ) gruppe
              ON st.fahrtnummerAnfang = gruppe.fahrtnummerAnfang
          
          ORDER BY CASE COALESCE(gruppe.anzahl,1)
                    WHEN 1 THEN st.laufplan 
                    ELSE gruppe.laufplan
                   END; 
                   
          +----------+-------------------+
          | laufplan | fahrtnummerAnfang |
          +----------+-------------------+
          | 61101    | K                 |
          | 61101    | K                 |
          | REB218   | 15369             |
          | 61101    | 15369             |
          | 61101    | 15371             |
          | 61202    | 15734             |
          | REA146   | 15734             |
          | REB423   | 6038              |
          +----------+-------------------+
          8 rows in set (0.00 sec)
          
          mysql>
          Okay, nicht okay, nachvollziehbar?

          Grüße
          Thomas

          Kommentar


          • #20
            Ich werde mcih heute Abend ransetzen. Erstmal vielen Dank für die Mühe.

            Kommentar

            Lädt...
            X