Daten sammeln über mehrere Abfragen
Rudi
- datenbank
Hallo,
ich hole Veranstaltungstermine eines Ortes für die nächsten sieben Tage. Wenn das weniger als zehn Termine sind, suche auch im Umkreis. Wenn immer noch unter zehn, erhöhe die Umkreis-km.
$arr_KM = array( 0, 10, 20, 50, 100, 500, 2000, 10000 );
$tag_bis = date( "Y-m-d", time() +60*60*24*7 );
for ( $i=0; $i<=count($arr_KM); $i++ )
{
$KM = $arr_KM[$i];
$q = "..."
$res_trm = @mysql_query( $q, $conn_id );
if ( @mysql_num_rows($res_trm) >= 10 ) break;
}
Nun passiert Folgendes:
Für einen Umkreis werden Termine gefunden, aber es sind weniger als zehn. Der nächstgrößere Umkreis ergibt vielleicht 60 Termine, darunter auch der Nachbarort. Weil aber nach Datum sortiert wird, drängeln sich weiter entfernte Orte unter die ersten 10, der Nachbar-Termin ist nicht darunter.
Nun könnte ich nach jedem Durchlauf die gefundenen Termine in PHP speichern und beim nächsten Durchlauf vergleichen. Falls noch nicht gespeichert, dann hinzufügen. Falls zehn Termine erreicht sind ...
Geht das mit MySQL einfacher? Irgendwie iin der Form: Behalte die gefundenen Sätze von der letzten Abfrage und suche weitere dazu?
Gruß Rudi
Hallo,
Geht das mit MySQL einfacher? Irgendwie iin der Form: Behalte die gefundenen Sätze von der letzten Abfrage und suche weitere dazu?
ich bin alles andere als ein Experte in MySQL, aber für mich hört sich das so an, als ob du LIMIT suchst.
Gruß Gunther
Hallo Gunther,
für mich hört sich das so an, als ob du LIMIT suchst.
Habe ganz interessiert gelesen und erst nach 5 min festgestellt, dass ich LIMIT bestens kenne. Nein, das ist es nicht.
Aber manchmal hat man ein Brett vorm Kopf.
Gruß Rudi
während die Frage läuft, denke ich natürlich weiter nach ...
Wenn ich zuerst nach km, dann nach Tag und Uhrzeit sortiere, habe ich die gewünschten zehn vorne.
ORDER BY km, tag, uhr
LIMIT 0,10
Aber die Ausgabe der ersten zehn muss so sortiert sein:
ORDER BY tag, km, uhr
Geht das mit MySQL?
während die Frage läuft, denke ich natürlich weiter nach ...
Wenn ich zuerst nach km, dann nach Tag und Uhrzeit sortiere, habe ich die gewünschten zehn vorne.
ORDER BY km, tag, uhr
LIMIT 0,10Aber die Ausgabe der ersten zehn muss so sortiert sein:
ORDER BY tag, km, uhrGeht das mit MySQL?
Was hat denn jetzt MySQL mit der Ausgabe zu tun?
Wenn du deine 10 Datensätze hast, kannst du die doch noch beliebig sortieren vor der Ausgabe.
Gruß Gunther
Tach!
Für einen Umkreis werden Termine gefunden, aber es sind weniger als zehn. Der nächstgrößere Umkreis ergibt vielleicht 60 Termine, darunter auch der Nachbarort. Weil aber nach Datum sortiert wird, drängeln sich weiter entfernte Orte unter die ersten 10, der Nachbar-Termin ist nicht darunter.
Dann frag duch nur beim ersten einen Kreis ab und mach die zweite Abfrage als Ring - also alles was im großen Radius liegt, aber nicht im kleinen.
dedlfix.
Hallo dedlfix,
Dann frag duch nur beim ersten einen Kreis ab und mach die zweite Abfrage als Ring - also alles was im großen Radius liegt, aber nicht im kleinen.
Gute Idee.
Rudi