LIMIT mit MSSQL geht nicht?!

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

  • LIMIT mit MSSQL geht nicht?!

    Ist einem bekannt wie mit MSSQL eine SELECT abfrage starte und die Ausgabe begrenzen kann => LIMIT 0,5 ??

    Bei mir geht das irgendwie nicht und in der Doku steht dazu auch nichts drin

    gruss

  • #2
    hmm,

    also LIMITist MySQL spezifisch, ich kenne keine Entsprechung dazu.

    Kommentar


    • #3
      geht das irgendwie anders ??

      ich habs mal mir For-schleife probiert, das wollte aber nicht so ganz
      Code:
      if ($num_rows) {
      		for ($i == 1; $i >= 2; $i++) {
      			$row = mssql_fetch_object($result);
      			echo $row->head."<br>";
      		}
      	} else {....
      oder kann ich bei einer While-anweisung zwei Bedingungen angeben oder die while anweisung mit break() unterbrechen ??

      Ich weiß, viele Fragen auf einmal, aber was will man machen :-))

      THX

      Kommentar


      • #4
        Problem hat sich von Selbst gelöst, trotzdem aber danke!

        Wenn es interessiert:
        Code:
        $counter = 0;
        		while ($counter < 2) {
        			$row = mssql_fetch_object($result);
        			echo "<tr class=\"tblbody\"><td colspan=\"2\"><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"95%\" align=\"center\">";
        			echo "<tr class=\"tblbody2\"><td colspan=\"2\"><b>$row->head</b></td></tr>";
        			echo "</table></td></tr>";
        			$counter++;
        		}
        Is zwar ein bischen länger als LIMIT 0,2 aber was solls :-)))

        gruss

        Kommentar


        • #5
          limit mit mssql geht! ich glaube das war first oder so...
          Ich habe leider keine ms-Doku mehr auf meine priv-rechner, versuchs einfach mal bei http://www.microsoft.com direkt.

          php-Entwicklung | ebiz-consult.de
          PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
          die PHP Marktplatz-Software | ebiz-trader.de

          Kommentar


          • #6
            meinst du vielleicht den Befehl ??

            SELECT FIRST 2 FROM db ??

            Werd ich gleich am Mo. ausprobieren!

            THX

            Kommentar


            • #7
              SELECT TOP 10 FROM...
              irgendwie so

              Kommentar


              • #8
                Also das funktioniert, aber es haut nicht hin, wenn ich eine bestimmte Anzahl an Datensätzen ab einem bestimmten Entrag haben will wie LIMIT 20,10.

                Hab das mal probiert, habs aber nicht hinbekommen :-((

                Eine Alternative hätte ich zwar, aber das kann es nicht sein, da das auch viel zu Ressourcenlastig wäre!
                Beispiel (while-Schleife):

                $anfang = 10;
                $anzahl = 10;
                $counter = 1

                while ($row-mssql_fetch_object) {
                if (($counter == anfang) && ($counter <= ($anfang + $anzahl))) {
                zeige an
                $counter++
                } else {
                zeige nicht
                counter++
                }

                Und per Link halt neue $anfang - Werte zuweisen.

                Bei ein paar hundert Datensätzen mag das ja noch egal sein, aber was mache ich, wenn ich ein paar 10.000 habe ??
                Irgendwie kann das nicht der Weisheit letzter Schluß sein!!

                Vielleicht fällt einem ja mal was ein

                gruss

                Kommentar


                • #9
                  Hallo,

                  ich weiß, der Thread ist schon 'ne Weile her, aber hast du inzwischen eine Lösung gefunden? Ich stehe nämlich gerade vor dem selben Problem und möchte eigentlich keine Schleife bauen, weil meine DB jetzt schon mit ca. 8.000 Einträgen geplant wird.
                  Wäre über Infos dankbar!

                  Und was das für ein Quatsch ist, dass es LIMIT nur bei MySQL gibt!!! Absolut unverständlich!

                  Gruß,
                  Felix
                  System:
                  PHP 4.1.2
                  MS SQL Server 2000
                  Win NT4 SP 6 auf PIII

                  Kommentar


                  • #10
                    LIMIT ist eben kein SQL-Standard!

                    ich hatte das Problem damals mit mssql_data_seek gelöst... such danach mal im PHP Manual!

                    gruss

                    Kommentar


                    • #11
                      Alles klar, danke.
                      Da kommt man wohl um Schleifen bauen nicht drumrum...
                      Schade - einfacher wäre es schöner, wie immer eigentlich.
                      Naja, man hat ja sonst nichts vor.
                      Gruß,
                      Felix
                      System:
                      PHP 4.1.2
                      MS SQL Server 2000
                      Win NT4 SP 6 auf PIII

                      Kommentar


                      • #12
                        Das gleiche Problem

                        Hallo,
                        1 Jahr später und das gleiche Problem.
                        Mit dem mssql_data_seek verstehe ich nicht wirklich.
                        Ich finde auch kein Beipsiel, wie das funktionierne koennte.
                        Habt Ihr vielleicht ein Beipsiel für mich??

                        Gruss
                        Olli

                        Kommentar


                        • #13
                          Re: Das gleiche Problem

                          Original geschrieben von olli.bu
                          Mit dem mssql_data_seek verstehe ich nicht wirklich.
                          Ich finde auch kein Beipsiel, wie das funktionierne koennte.
                          hast du bereits ins manual geschaut, was der befehl macht?

                          na fein - dann ist die "lösung" doch einfach.

                          du liest einfach alle datensätze aus, bewegst dich dann mit mysql_data_seek() bis zum x-ten datensatz, und liest von dort aus dann y datensätze in einer schleife aus.

                          somit hättest du dann die wirkung des LIMIT von mysql emuliert.

                          (allerdings frage ich mich wirklich, ob es dazu bei mssql wirklich keine performantere entsprechung geben soll ...?)
                          Zuletzt geändert von wahsaga; 13.06.2004, 15:18.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Limit mit MSSQL

                            Hallo erst mal herzlichen Dank für dei schnelle Antwort,

                            aber entweder raff ich es heute nicht, oder ich will es nicht verstehen.

                            wo kann ich denn dieses data_seek einsetzen.

                            Meine querys sehen wie folgt aus.


                            $query = "Select *from tblTest";
                            $result = mssql_query($query);
                            $num = mssql_num_rows($result);

                            for($i=0;$i<$num; $i++)
                            {
                            $spalte1 = mssql_result($result,$i, "spalte1");
                            $spalte2 = mssql_result($result,$i, "spalte2");
                            $spalte3 = mssql_result($result,$i, "spalte3");

                            print "$spalte1, $spalte2, $spalte3}

                            Wo muss ich den jetzt da data_seek einbauen? und wo die schleife??
                            Wäre prima, wenn du mir noch mal helfen koenntest.

                            Gruss
                            Olli

                            Kommentar


                            • #15
                              Re: Limit mit MSSQL

                              na komm, so scher isses doch wohl wirklich nicht ...

                              deshalb gibt's auch nur pseudo-code, umsetzen darfst du selber *g*

                              du willst LIMIT imitieren, welches ja bekanntlich von einem startwert aus eine bestimmte anzahl von datensätzen zurückliefert.

                              also,
                              • alle datensätze aus der DB auslesen
                              • ergebniszeiger auf dem datensatz mit der nummer startwert positionieren (ja, hier kommt mssql_data_seek ins spiel)
                              • in einer schleife jetzt anzahl mal einen datensatz auslesen und anzeigen

                              das dürfte m.E. auch schon alles sein.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X