MYSQL - LIMIT PER Subquery ermitteln?

... komplette Frage anzeigen

2 Antworten

Was verstehst Du unter bestimmter Anzahl? Ist das ein Wert, das Du vorgibst? Z.B. ich möchte die ersten 20 Sätze lesen, egal wieviele es insgesamt sind. Oder Du möchtest die Dir noch unbekannte Anzahl erst durch die Abfrage ermitteln.

Im ersten Fall kannst Du die Ausgabe der Sätze mittels LIMIT begrenzen, im zweiten Fall mit COUNT(*) zählen:

SELECT COUNT(*) FROM tabelle 
WHERE name = 'Müller'

In diesem Beispiel bekommst Du die Anzahl der Sätze, deren Spalte name gleich 'Müller' ist.

Beim Limit musst Du daran denken, dass normalerweise die Sätze sortiert benötigt werden. Wenn Du 10000 Sätze hast und nur die ersten 3 sehen willst, müssen erst die 10000 sortiert werden, was länger dauern kann. Es sei denn, dass für den Sortierbegriff ein Index eingerichtet wurde. Dann kann die Datenbank die ersten 3 benötigten Sätze direkt ermitteln, weil die Sätze bereits in der richtigen Reihenfolge angeliefert werden.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schwimmakademie
27.04.2016, 12:02

moin,

um mein Problem zu konkretisieren:

ich habe eine Tabelle mit einem Datumseintrag und habe folgende Queries drauf:

SELECT COUNT(1) From `autos` WHERE 'TUEV` <= " ' . $checkdate .  ' ";

Das Ergebnis wird in $anz gespeichert und verwendet in:

SELECT `ID`, `Kennzeichen`, `Fahrer` FROM `autos` ORDER By TUEV LIMIT 0, $anz+1;

Warum? Nun ich soll nicht nur alle föälligen listen sondern auch den Abstand zum nächsten Fahrzeug, das noch "grün" ist.

Das funktioniert auch prima. Ich möchte dies aber in eine abfrage packen und wüsste gern ob jemand eine Sysntax kennt um das Ergebnis einer subquery als Limit variable zu nutzen.

THX

0

Die Query in einer While-Schleife?!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schwimmakademie
26.04.2016, 12:30

mir schwebt sowas vor wie

SELECT * FROM `tbl` ORDER BY `XY` LIMIT 0, (SELECT * FROM `XXS` WHERE Bedingung ) +1

0
Kommentar von thomsue
26.04.2016, 12:42

Im Internet steht, dass Limit einen festen Wert haben muss. Keine Variable.

Ich denke du kommst besser, wenn du die Begrenzung in eine Schleife packst

0