Rudi: Daten sammeln über mehrere Abfragen

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

  1. 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

    1. 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

  2. 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?

    1. 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?

      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

  3. 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.

    1. 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