Joachim: Zeilen herauslesen

Hi

Wie kann ich bestimmte Zeilenbereiche herausfiltern.
So geht es zum Beispiel nur solange man keine Zeile löscht:

$sql = "select * from warteliste where nr>=$zeilenanfang and nr<=$zeilenende";

nr ist eine Autoinkrement - Spalte ... Wenn man jetzt aber eine Zeile löscht stimmt alles nicht mehr. Dann ist die Spalte 10 nicht mehr Nummer 10! Wie kann man die Zeilen eindeutig aufrufen? Zum Beispiel Zeile 5 bis 10?

Vielen Dank

  1. Hallo,

    Wie kann ich bestimmte Zeilenbereiche herausfiltern.
    So geht es zum Beispiel nur solange man keine Zeile löscht:
       $sql = "select * from warteliste where nr>=$zeilenanfang and nr<=$zeilenende";

    nr ist eine Autoinkrement - Spalte ... Wenn man jetzt aber eine Zeile löscht stimmt alles nicht mehr. Dann ist die Spalte 10 nicht mehr Nummer 10! Wie kann man die Zeilen eindeutig aufrufen? Zum Beispiel Zeile 5 bis 10?

    $sql = "SELECT (Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1 AS Zeilennummer, warteliste.*
    FROM warteliste
    WHERE ((((Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1)>4 And ((Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1)<11));"

    sollte eigentlich funktionieren

    Viele Grüße aus Köln
    Markus

    1. Hallo Marcus, hallo Joachim

      »» Wie kann ich bestimmte Zeilenbereiche herausfiltern.

      So geht es zum Beispiel nur solange man keine Zeile löscht:
         $sql = "select * from warteliste where nr>=$zeilenanfang and nr<=$zeilenende";

      »»Wie kann man die Zeilen eindeutig aufrufen? Zum Beispiel Zeile 5 bis 10?

      $sql = "SELECT (Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1 AS Zeilennummer, warteliste.*
      FROM warteliste
      WHERE ((((Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1)>4 And ((Select Count (*) FROM [warteliste] as tmpwarteliste WHERE [tmpwarteliste].[nr] < [warteliste].[nr])+1)<11));"

      sollte eigentlich funktionieren

      Mit MySQL geht das garantiert nicht, das unterstützt keine Subselects.

      Deshalb die MySQL-Variante:

      select * from warteliste order by nr limit 5,5

      gibt die Zeilen 5 bis 10 aus. Die erste Zahl gibt die Zeile an, ab der begonnen werden soll. Die zweite Zahl die Anzahl der auszulesenden Zeilen.

      Das order by ist an sich nicht notwendig, ordnet aber sicherheitshalber nach dem Autoincrementfeld.

      Viele Grüße

      Antje

      1. Hallo Antje,

        Mit MySQL geht das garantiert nicht, das unterstützt keine Subselects.

        Sorry, dann wieder alles zurück.

        Ich arbeite nicht mit MySQL sondern mit SQLServer bzw. für kleinere Projekte mit Access und hab halt in meinem jugedliche Leichtsinn unterstellt, daß MySQL dieses auch beherrschen sollte/könnte.

        Viele Grüße
        Markus