John: MySql-Select-Frage

Hallo!
Ich habe php5 und mysql 5.
Bei meinem SELECT suche ich den Eintrag in der Tabelle 'Tab', bei denen das Feld 'Stichwort' gleich 'rot' ist und das Feld 'Nr' gleich 123 ist. (Jede Nr. kommt nur einmal in der Tabelle vor und es wird fortlaufend gezählt.)
Aber wie bekomme ich im result_array nicht nur die Nr. 123, sondern auch die 5 vorherigen und 5 nächsten Einträge mit 'rot'?
Geht das in einem sql-Statement?

  1. Hallo,

    Aber wie bekomme ich im result_array nicht nur die Nr. 123, sondern auch die 5 vorherigen und 5 nächsten Einträge mit 'rot'?
    Geht das in einem sql-Statement?

    in dem du von der Nummer einmal 5 abziehst und einmal 5 draufrechnest. Dann arbeitest du mit größer als und kleiner als.
    insgesamt hast du also drei bediungungen:
    1. Stichwort = 'Rot'     AND
    2. Nr > " . ( $n-5 ) . " AND
    3. Nr < " . ( $n+5 ) . ";"

    MfG. Christoph Ludwig

    --
    Wo die Sprache aufhört, fängt die Musik an...
    Selfcode:  sh:( fo:| ch:} rl:( br:> n4:? ie:{ mo:) va:} js:| de:> zu:) fl:( ss:) ls:&
    Go to this
    1. Hallo,

      Aber wie bekomme ich im result_array nicht nur die Nr. 123, sondern auch die 5 vorherigen und 5 nächsten Einträge mit 'rot'?
      Geht das in einem sql-Statement?

      in dem du von der Nummer einmal 5 abziehst und einmal 5 draufrechnest. Dann arbeitest du mit größer als und kleiner als.
      insgesamt hast du also drei bediungungen:

      1. Stichwort = 'Rot'     AND
      2. Nr > " . ( $n-5 ) . " AND
      3. Nr < " . ( $n+5 ) . ";"

      MfG. Christoph Ludwig

      Nee nee. Die Einträge sind fortlaufend nummeriert, können aber eben auch als Stichwort z.B. blau, grün, etc haben.
      1 rot weitereDaten
      2 grün weitereDaten
      3 rot weitereDaten
      4 blau weitereDaten
      5 blau weitereDaten
      6 rot weitereDaten
      7 rot weitereDaten
      usw.

      1. Hallo,

        Nee nee. Die Einträge sind fortlaufend nummeriert, können aber eben auch als Stichwort z.B. blau, grün, etc haben.
        1 rot weitereDaten
        2 grün weitereDaten
        3 rot weitereDaten
        4 blau weitereDaten
        5 blau weitereDaten
        6 rot weitereDaten
        7 rot weitereDaten
        usw.

        Dann könntest du eventuell zwei abfragen machen
        1. Suche alles mit 'Rot', wo die Nummer kleiner als n ist. LIMIT 5;
        1. Suche alles mit 'Rot', wo die Nummer größer als n ist. LIMIT 5;

        MfG. Christoph Ludwig

        --
        Wo die Sprache aufhört, fängt die Musik an...
        Selfcode:  sh:( fo:| ch:} rl:( br:> n4:? ie:{ mo:) va:} js:| de:> zu:) fl:( ss:) ls:&
        Go to this
        1. Dann könntest du eventuell zwei abfragen machen

          1. Suche alles mit 'Rot', wo die Nummer kleiner als n ist. LIMIT 5;
          2. Suche alles mit 'Rot', wo die Nummer größer als n ist. LIMIT 5;

          MfG. Christoph Ludwig

          Ja. Das kam mir auch gerade in den Sinn.
          Danke trotzdem für die Hilfe!
          Und einen schönen Sonntag!
          Grüße

        2. Hi!

          Dann könntest du eventuell zwei abfragen machen

          1. Suche alles mit 'Rot', wo die Nummer kleiner als n ist. LIMIT 5;
          2. Suche alles mit 'Rot', wo die Nummer größer als n ist. LIMIT 5;

          Sortieren nicht vergessen, sonst bringt das Limit ungewünschte Ergebnisse. Beide Abfragen lassen sich mit UNION in eine bringen. Dazu kann man auch noch die "Nummer ist gleich"-Anfrage nehmen.

          Lo!