mappo: MYSQL Einträge um einen Wert herum

Hi,

gibt es eine einfache Möglichkeit, sagen wir mal 20 Werte um einen bestimmten Wert herum ausgeben zu lassen.
Also wir haben eine Tabelle mit Namen und Punkten.
Sagen wir ich habe einen Wert den ich mit

where name=hans

bestimme. Dann möchte ich um diesen Wert herum nach Punkten sortieren.

mfg mappo

  1. Hi,

    gibt es eine einfache Möglichkeit, sagen wir mal 20 Werte um einen bestimmten Wert herum ausgeben zu lassen.
    Also wir haben eine Tabelle mit Namen und Punkten.
    Sagen wir ich habe einen Wert den ich mit

    where name=hans

    bestimme. Dann möchte ich um diesen Wert herum nach Punkten sortieren.

    Sortiere nach dem Betrag der Differenz, und LIMITiere die Menge der Datensätze, die ins Ergebnis kommen entsprechend.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo,

    gibt es eine einfache Möglichkeit, sagen wir mal 20 Werte um einen bestimmten Wert herum ausgeben zu lassen.

    ja klar - bilde den Betrag der Differenz zwischen dem Zielwert und dem entsprechenden Wert des Datensatzes, sortiere danach, und lass dir davon die ersten 20 Ergebnisse liefern.

    Also wir haben eine Tabelle mit Namen und Punkten.
    Sagen wir ich habe einen Wert den ich mit
    where name=hans
    bestimme. Dann möchte ich um diesen Wert herum nach Punkten sortieren.

    Das verstehe ich nicht ganz - was hat hans hier für eine Bedeutung? Möchtest du die Ähnlichkeit von Namen (Strings) bewerten?

    So long,
     Martin

    --
    Idealismus wächst mit der Entfernung zum Problem.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      gibt es eine einfache Möglichkeit, sagen wir mal 20 Werte um einen bestimmten Wert herum ausgeben zu lassen.

      ja klar - bilde den Betrag der Differenz zwischen dem Zielwert und dem entsprechenden Wert des Datensatzes, sortiere danach, und lass dir davon die ersten 20 Ergebnisse liefern.

      Also wir haben eine Tabelle mit Namen und Punkten.
      Sagen wir ich habe einen Wert den ich mit
      where name=hans
      bestimme. Dann möchte ich um diesen Wert herum nach Punkten sortieren.

      Das verstehe ich nicht ganz - was hat hans hier für eine Bedeutung? Möchtest du die Ähnlichkeit von Namen (Strings) bewerten?

      So long,
      Martin

      Also ich habe mehrere User in der Datenbank und jeder hat ne bestimmte Punktzahl

      Hans 500
      Peter 1000
      Michel 4456

      Wenn ich jetzt einen bestimmten User herauspicke z.B. Hans, dann möchte ich die 10 besseren bzw. 10 schlechteren als Hans mit ausgeben.

      Das mit dem Betrag liefert dann doch nur die 20 Werte die besser oder Schlechter sind als Hans oder?

      1. Hi,

        bitte zitiere sinnvoll, und nicht einfach alles.

        Das mit dem Betrag liefert dann doch nur die 20 Werte die besser oder Schlechter sind als Hans oder?

        Die Einschränkung mittels WHERE-Klausel passiert auf Datensatz-Ebene.
        Welche Spalteninhalte du dir zurückliefern lässt, gibst du über die Spalten-Liste nach SELECT an.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Jo,

          bitte zitiere sinnvoll, und nicht einfach alles.

          Ok =)

          Die Einschränkung mittels WHERE-Klausel passiert auf Datensatz-Ebene.
          Welche Spalteninhalte du dir zurückliefern lässt, gibst du über die Spalten-Liste nach SELECT an.

          Das ändert doch nichts daran das ich mit einer

          order_by(abs('points'-$points),DESC bzw. ASC)

          Abfrage, nur die 20 Einträge bekomme die Punktemäßig vor bzw. hinter einem User stehen oder?

          mfg map

          1. Hi,

            Das ändert doch nichts daran das ich mit einer

            order_by(abs('points'-$points),DESC bzw. ASC)

            Abfrage, nur die 20 Einträge bekomme die Punktemäßig vor bzw. hinter einem User stehen oder?

            Ich hatte dich so verstanden, als ob du genau das wolltest.

            Wenn du mit „20 Werte um einen bestimmten Wert herum“ irgendwas anderes meinst, dann musst du das deutlicher formulieren.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Hi,

              Ich hatte dich so verstanden, als ob du genau das wolltest.

              Wenn du mit „20 Werte um einen bestimmten Wert herum“ irgendwas anderes meinst, dann musst du das deutlicher formulieren.

              Achso, naja deswegen schreib ich ja "um den Wert herum" =)
              Also 10 Einträge die Punktemäßig besser als der User sind und 10 Einträge die Punktemäßig schlechter sind als der User.

              mfg map

              1. Hi,

                Also 10 Einträge die Punktemäßig besser als der User sind und 10 Einträge die Punktemäßig schlechter sind als der User.

                Na dann mach zwei Abfragen, in denen du nur mit größer-gleich/kleiner-gleich auswählst und auf-/absteigend sortierst, und kombiniere diese zwei mittels UNION.

                MfG ChrisB

                --
                RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
                1. Na dann mach zwei Abfragen, in denen du nur mit größer-gleich/kleiner-gleich auswählst und auf-/absteigend sortierst, und kombiniere diese zwei mittels UNION.

                  Also ich arbeite mit dem Kohana Framework, welches leider kein UNION unterstützt. Aber mit den zwei Abfragen und nem array_merge klappt es auch.
                  Danke für die Hilfe.

                  mfg map