Datensatz holen inklusive der umliegenden

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

  • Datensatz holen inklusive der umliegenden

    Hi,

    ich versuche gerade einen Datensatz mit den umliegenden Daten aus einer Tabelle zu holen.

    Mein Ansatz ist momentan folgender:
    Alle Datensätze selecten und den gewünschten Bereich ausschneiden.

    Da es ja schonmal ein paar Datensätze werden können frage ich mich gerade ob ich das nicht auch mit einer Query hinbekomme.


    Bsp:
    Code:
    Inhalt Tab1:
    1  foo
    2  bar
    3  blub
    4  bla
    5  lalalal
    gewünschter Datensatz = "blub"
    Code:
    Ergebnis:
    2  bar
    3  blub
    4  bla
    Vielleicht hat jemand nen Tip für mich wie ich das realisieren kann.

  • #2
    Re: Datensatz holen inklusive der umliegenden

    Original geschrieben von prego
    Mein Ansatz ist momentan folgender:
    Alle Datensätze selecten und den gewünschten Bereich ausschneiden.
    Argh, bloss nicht.

    [...] frage ich mich gerade ob ich das nicht auch mit einer Query hinbekomme.
    Dazu ist mir keine effektive Möglichkeit bekannt.

    Mit zwei Queries ist es ja kein Problem - WHERE, ORDER BY und LIMIT helfen schnell weiter.
    Und wenn du magst, kannst du diese beiden ja noch mittels UNION zusammenfassen, so dass du letztendlich "ein Ergebnis" bekommst.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: Re: Datensatz holen inklusive der umliegenden

      Original geschrieben von wahsaga
      Argh, bloss nicht.
      Richtig - das dachte ich mir auch.

      Dazu ist mir keine effektive Möglichkeit bekannt.

      Mit zwei Queries ist es ja kein Problem - WHERE, ORDER BY und LIMIT helfen schnell weiter.
      Und wenn du magst, kannst du diese beiden ja noch mittels UNION zusammenfassen, so dass du letztendlich "ein Ergebnis" bekommst.
      Oh, mit Union habe ich noch nichts gemacht - gleich mal schauen.

      Allerdings ist mir auch nicht klar, wie ich das mit 2 Queries hinbekommen soll... Vielleicht kannst du mir noch ein wenig auf die Sprünge helfen?

      Kommentar


      • #4
        Re: Datensatz holen inklusive der umliegenden

        Original geschrieben von prego
        gewünschter Datensatz = "blub"
        Heißt das, die ID dieses Datensatzes, in diesem Falle 3, ist bereits bekannt?
        Ansonsten müsste diese ja auch erst noch ermittelt werden.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Nope,

          das ganze soll nachher so ähnlich wie Google Suggest funktionieren. Ich gebe die Anfangsbuchstaben eine Wortes ein. Anhand dieser wir in meiner Tabelle ein Datensatz selektiert. Soweit habe ich es auch jetzt schon. Ich möchte aber das man auch noch in den ergebnissen blättern kann. (Zumindest ein paar Datensätze).

          http://www.google.com/webhp?complete=1&hl=en

          Kommentar


          • #6
            hmm, ich könnte einfach den anfangsbuchstaben nehmen und da einen von "abziehen" und einen "hinzunehmen" und dann danach selecten.

            Code:
            SELECT * FROM tab1 WHERE 
            LOWER(SUBSTR(feld, 1, 1)) = 'a' OR
            LOWER(SUBSTR(feld, 1, 1)) = 'b' OR 
            LOWER(SUBSTR(feld, 1, 1)) = 'c'

            EDIT:
            Query korrigiert
            Zuletzt geändert von prego; 08.05.2006, 10:52.

            Kommentar


            • #7
              Ich habs.

              Ich suche doch sowieso erst ab dem 2ten Buchstaben. Somit nehm ich eben die Ergebnismenge für den ersten Buchstaben und markieren darin den ersten Treffer für alle eingegebenen Buchstaben...


              Oder?

              Kommentar


              • #8
                Original geschrieben von prego
                das ganze soll nachher so ähnlich wie Google Suggest funktionieren. Ich gebe die Anfangsbuchstaben eine Wortes ein. Anhand dieser wir in meiner Tabelle ein Datensatz selektiert. Soweit habe ich es auch jetzt schon. Ich möchte aber das man auch noch in den ergebnissen blättern kann.
                Also dient nicht die Zahl zur Herstellung der Sortierung (was ich anfangs angenommen bzw. befürchtet hatte), sondern doch der Textinhalt des Datensatzes?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Japp. Man wählt in dieser Liste einfach sein "Thema" aus und die ID wird dann Anhand der User-Id gespeichert.

                  Sortierung erfolgt nach dem Namen.

                  Code:
                  select * FROM s_user_courses 
                  WHERE 
                  lower(substr(name, 1, 1)) = 'w'
                  
                  ORDER BY name

                  Kommentar


                  • #10
                    Ich habe das mit zwei queries gemacht, zuerst die exakte Position von blub gesucht im Index von blub. Und dann ein limit $pos-3,5 .

                    (Bemerkungen: Das zusätzliche (-1) ist für den 0-origin von offset. (S($key) ist die escape-Funktion)

                    PHP-Code:
                    $sql=
                        
                    'SELECT count(*)' 
                         
                    ' FROM ' .$dbtable
                        
                    ' WHERE feld<= ' S($feld (...blub)) 
                            . 
                    ' ORDER BY feld
                        .'
                    ;';

                         $rs = mysql_query($sql,$cn); 
                         if(mysql_errno()) return (mysql_error() . $sql);
                         if(mysql_num_rows($rs)==0) return (' 
                    keine Datensätze.' . $sql);
                         $row=mysql_fetch_array($rs,MYSQL_NUM);
                         $pos = $row[0];

                        $sql=
                        '
                    SELECT feldundnocheinigefelder,'
                         . ' 
                    FROM ' .$dbtable
                        . ' 
                    ORDER BY feld
                        
                    ' LIMIT ' $anzahl ' OFFSET ' intval($pos-3-1) .';' 

                    Kommentar

                    Lädt...
                    X