Ankündigung

Einklappen
Keine Ankündigung bisher.

UNION ALL mit ORDER BY

Einklappen

Neue Werbung 2019

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

  • UNION ALL mit ORDER BY

    Servus,
    mal ne kurze Frage ob das query so richtig ist.
    Ich habe verschiedene selects, die ich mit nem union all verknüpfe. Anschließend möchte ich die Ergebnisse der verschiedenen selects "gemeinsam" nach dem Datum sortieren:

    PHP-Code:
    SELECT FROM (
        
    // erstes select statement

        
    UNION ALL

        
    // zweites select statement    

        
    UNION ALL

        
    // drittes select statement 

        
    UNION ALL

        
    // viertes select statement

        
    UNION ALL

        
    // fünftes select statement

        
    UNION ALL

        
    // sechstes select statement
    ) AS t
    ORDER BY t
    .datum DESC 
    Regards,
    Sakron
    No Sacrifice , no Glory--


  • #2
    Zitat von Sakron Beitrag anzeigen
    Servus,
    mal ne kurze Frage ob das query so richtig ist.
    Ja.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Kommt das raus was du willst? Dann kann er ja nicht falsch sein. Du kannst dir aber den Subquery sparen, UNION kennt auch ORDER BY.

      Kommentar


      • #4
        Zitat von erc Beitrag anzeigen
        Du kannst dir aber den Subquery sparen, UNION kennt auch ORDER BY.
        er will über ALLE sortieren.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Sicher, dass du aus sovielen Tabellen was brauchst? Sieht auf den ersten blick ziemlich unnormalisiert aus.
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            Zitat von tkausl Beitrag anzeigen
            Sicher, dass du aus sovielen Tabellen was brauchst? Sieht auf den ersten blick ziemlich unnormalisiert aus.
            Ich glaube, du siehst Gespenster.
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Zitat von akretschmer Beitrag anzeigen
              Ich glaube, du siehst Gespenster.
              Ja, kann sein
              Zitat von nikosch
              Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

              Kommentar


              • #8
                jo is ne Gesamtübersicht, die ich übersichtshalber nicht in einer Tabelle habe und dort mit id's logisch trenne, sondern auf verschiedene
                Tabellen ausgelagert habe. Auch aus performance Gründen.

                Das Query ist zu lang und phpmyadmin spuckt garnix aus, sagt nur dass das query in Ordnung geht.
                (Edit: 16:46 -> query gibt die richtigen Ergebnisse.)

                Edit: Ich hatte das am Anfang ohne das SELECT `* FROM außen rum und dann einfach am Schluss das
                Order by datum, dann ist mir aber aufgefallen, dass es ja dann nur das letzte select statement nach dem Datum sortiert. Oder liege ich da falsch?

                Regards & danke.
                No Sacrifice , no Glory--

                Kommentar


                • #9
                  Zitat von Sakron Beitrag anzeigen
                  Edit: Ich hatte das am Anfang ohne das SELECT `* FROM außen rum und dann einfach am Schluss das
                  Order by datum, dann ist mir aber aufgefallen, dass es ja dann nur das letzte select statement nach dem Datum sortiert. Oder liege ich da falsch?

                  Regards & danke.
                  Code:
                  test=*# select * from generate_series(1,10) s union all select * from generate_series(1,5) y;
                   s
                  ----
                    1
                    2
                    3
                    4
                    5
                    6
                    7
                    8
                    9
                   10
                    1
                    2
                    3
                    4
                    5
                  (15 rows)
                  
                  test=*# select * from (select * from generate_series(1,10) s union all select * from generate_series(1,5) y) foo order by s;
                   s
                  ----
                    1
                    1
                    2
                    2
                    3
                    3
                    4
                    4
                    5
                    5
                    6
                    7
                    8
                    9
                   10
                  (15 rows)
                  
                  test=*# select * from generate_series(1,10) s union all select * from generate_series(1,5) y order by s;
                   s
                  ----
                    1
                    1
                    2
                    2
                    3
                    3
                    4
                    4
                    5
                    5
                    6
                    7
                    8
                    9
                   10
                  (15 rows)
                  Zu Performance-Fragen fragen Sie das Explain Ihres Vertrauens.
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    danke akretschmer
                    Und natürlich tkausl und erc.
                    No Sacrifice , no Glory--

                    Kommentar


                    • #11
                      Zitat von akretschmer Beitrag anzeigen
                      er will über ALLE sortieren.
                      Ja!? Wie gesagt UNION kennt auch ORDER BY...

                      *edit* ok, hast du grade selbst mitbekommen...

                      Kommentar


                      • #12
                        Kann da bis jetzt (weil erst sehr wenig Daten drin stehen) noch keinen Performance Unterschied sehen, aber ich denke mal subselects sind ja sowieso immer etwas langsamer, von daher nehme ich deinen und akretschmer seinen Weg ohne das Select * from drum herum.

                        Indexe habe ich bis jetzt noch nicht gesetzt, muss ich erst nochmal nachlesen auf was genau ich die setze.
                        Ich dachte auf die PK's und FK's, die ich beim Joinen nutze.. ?
                        No Sacrifice , no Glory--

                        Kommentar

                        Lädt...
                        X