Matze: Reihenfolge bei Ausgabe

Hallo!

Ich habe folgendes Problem, ich habe eine Tabelle in der ich per Hand neue Datensätze einfüge.
Wenn ich jetzt ein SELECT ohne ORDER BY durchführe, werden die neuesten Datensätze an letzter Stelle gelistet.
Also "sortiert" in der Reihenfolge wie ich die Datensätze eingetragen habe.
Kann ich diese Reihenfolge irgendwie umdrehen, sodass der zuletzt eingetragene Datensatz zuerst und der zuerst eingetragene zuletzt gelistet wird?

Die Tabelle hat keine Datums- und auch keine auto_increament-Spalte.
Kann ich die Reihenfolge trotzdem irgendwie "umdrehen"?

Danke für eure Hilfe!

Grüße, Matze

  1. Hi,

    Ich habe folgendes Problem, ich habe eine Tabelle in der ich per Hand neue Datensätze einfüge.
    Wenn ich jetzt ein SELECT ohne ORDER BY durchführe, werden die neuesten Datensätze an letzter Stelle gelistet.
    Also "sortiert" in der Reihenfolge wie ich die Datensätze eingetragen habe.

    Nein, in zufälliger Reihenfolge.

    Kann ich diese Reihenfolge irgendwie umdrehen, sodass der zuletzt eingetragene Datensatz zuerst und der zuerst eingetragene zuletzt gelistet wird?

    Durch ein geeignetes Order by.

    Die Tabelle hat keine Datums- und auch keine auto_increament-Spalte.
    Kann ich die Reihenfolge trotzdem irgendwie "umdrehen"?

    Dann muß eine solche Spalte noch hinzugefügt werden.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. echo $begrüßung;

    Wenn ich jetzt ein SELECT ohne ORDER BY durchführe, werden die neuesten Datensätze an letzter Stelle gelistet.

    Nein, die Reihenfolge der Ausgabe ohne ORDER BY ist undefiniert, also zufällig.

    Kann ich diese Reihenfolge irgendwie umdrehen, sodass der zuletzt eingetragene Datensatz zuerst und der zuerst eingetragene zuletzt gelistet wird?

    Sortiere geeignet.

    Die Tabelle hat keine Datums- und auch keine auto_increament-Spalte.
    Kann ich die Reihenfolge trotzdem irgendwie "umdrehen"?

    Wenn du dich auf die zufällige Ausgabe verlassen willst, ergänze das SELECT-Statement um eine Spalte mit einer benutzerdefinierte Variable, die du hochzählst. Setze dieses Statement als Subselect in die FROM-Klausel einer äußeren Abfrage und sortiere diese.

    echo "$verabschiedung $name";

    1. Hallo!

      Wenn ich jetzt ein SELECT ohne ORDER BY durchführe, werden die neuesten Datensätze an letzter Stelle gelistet.
      Nein, die Reihenfolge der Ausgabe ohne ORDER BY ist undefiniert, also zufällig.

      Was meinst du mit "zufällig"? Also egal wie oft ich das Script aufrufe, die Reihenfolge ist immer die gleiche. Von "zufällig" kann also keine Rede sein.

      Wenn du dich auf die zufällige Ausgabe verlassen willst, ergänze das SELECT-Statement um eine Spalte mit einer benutzerdefinierte Variable, die du hochzählst. Setze dieses Statement als Subselect in die FROM-Klausel einer äußeren Abfrage und sortiere diese.

      Ich denke eine Datumsspalte hinzuzufügen ist dann doch die einfachere Lösung.

      Danke für die Hilfe!

      Grüße, Matze

      1. Was meinst du mit "zufällig"? Also egal wie oft ich das Script aufrufe, die Reihenfolge ist immer die gleiche. Von "zufällig" kann also keine Rede sein.

        Gemeint ist, dass die Ausgabereihenfolge bei fehlender ORDER-Angabe nicht definiert ist, also der DB-Software respektive dem Server obliegt. Benutzt du eine andere Software mit der gleichen Datenbank können andere Reihenfolgen (ggf. auch zufällig, wenn sie so programmiert ist) auftreten.

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
        1. yo,

          Benutzt du eine andere Software mit der gleichen Datenbank können andere Reihenfolgen (ggf. auch zufällig, wenn sie so programmiert ist) auftreten.

          es muss nicht gleich eine andere software sein, selbst bei der gleichen könnnen andere ergebnisse zu tage kommen.

          Ilja

      2. echo $begrüßung;

        Nein, die Reihenfolge der Ausgabe ohne ORDER BY ist undefiniert, also zufällig.
        Was meinst du mit "zufällig"? Also egal wie oft ich das Script aufrufe, die Reihenfolge ist immer die gleiche. Von "zufällig" kann also keine Rede sein.

        Es ist zufällig die Reihenfolge, in der du die Daten eingegeben hast. Man kann sicherlich davon ausgehen, wenn du immer nur anfügst und keine Lücken durch Löschen erstellst, dass dann die Reihenfolge beim Auslesen auch der Eingabereihenfolge entspricht. Es ergibt keinen Sinn, wenn das DBMS die Datensätze bei einer dateibasierten Speicherung nicht fortlaufend anfügen und ebenso wieder auslesen würde. Du bekommst nur keine Garantie, dass das unter allen Umständen so bleibt.

        echo "$verabschiedung $name";

        1. Hallo!

          Was meinst du mit "zufällig"? Also egal wie oft ich das Script aufrufe, die Reihenfolge ist immer die gleiche. Von "zufällig" kann also keine Rede sein.
          Es ist zufällig die Reihenfolge, in der du die Daten eingegeben hast. Man kann sicherlich davon ausgehen, wenn du immer nur anfügst und keine Lücken durch Löschen erstellst, dass dann die Reihenfolge beim Auslesen auch der Eingabereihenfolge entspricht.

          Ja gut, dessen bin ich mir bewusst. Deswegen auch das "sortiert" in Anführungszeichen im OP.

          Es ergibt keinen Sinn, wenn das DBMS die Datensätze bei einer dateibasierten Speicherung nicht fortlaufend anfügen und ebenso wieder auslesen würde. Du bekommst nur keine Garantie, dass das unter allen Umständen so bleibt.

          Auch dessen bin ich mir bewusst. Ich dachte nur man kann das DBMS irgendwie dazu bewegen von "hinten" mit dem Auslesen der Daten zu beginnen. Quasi die Tabelle vorher umzudrehen.

          Danke für die Hilfe!

          Grüße, Matze

          1. echo $begrüßung;

            Ich dachte nur man kann das DBMS irgendwie dazu bewegen von "hinten" mit dem Auslesen der Daten zu beginnen. Quasi die Tabelle vorher umzudrehen.

            Da die MySQL-API im Allgemeinen sämtliche Daten abholt und zwischenspeichert, bevor man mit dem Fetchen beginnt, kannst du diesen Zwischenspeicher auch von hinten auslesen. Es reicht dann nur nicht nur ein einfaches Fetch zu notieren, du brauchst zusätzlich noch eine Positionierung des Auslesezeigers.

            echo "$verabschiedung $name";