Menu

Abfrage Ergebnisse mit 2. Tabelle vergleichen

2008-06-02
2013-05-28
  • Norbert Fryer

    Norbert Fryer - 2008-06-02

    Hallo liebe Fachleute,

    ich möchte folgendes realisieren:
    Mit OpengeoDB erzeuge ich eine Umkreissuche um eine PLZ (funktioniert).
    In einer WHILE-Schleife fragt mein Script brav alles ab und gibt es als Liste aus (als Test).

    Frage:
    Wie kann ich nun diese Ergebnisse mit den PLZ einer vorhandenen Tabelle mit Händlern vergleichen?
    Der soll also bei jeder PLZ aus der Umkreissuche nachsehen, ob eine identische PLZ im Händlerverzeichnis exisitert und dann den entsprechenden Händler ausgeben.

    Hier nun der bestehende Code...

    UMKREISSUCHE:
    $result1 = mysql_query("SELECT zip_code_b.text_val AS zip_code_b,
    acos( sin( coord_b.lat * PI( ) /180 ) * sin( coord_a.lat * PI( ) /180 ) + cos( coord_b.lat * PI( ) /180 ) * cos( coord_a.lat * PI( ) /180 ) * cos( coord_b.lon * PI( ) /180 - coord_a.lon *
    PI( ) /180 ) )* 6380 as Entfernung
    FROM geodb_textdata AS zip_code_a
    JOIN geodb_coordinates coord_a ON coord_a.loc_id = zip_code_a.loc_id
    JOIN geodb_textdata AS zip_code_b ON zip_code_b.text_type =500100000
    JOIN geodb_coordinates coord_b ON coord_b.loc_id = zip_code_b.loc_id
    WHERE zip_code_a.text_type =500100000
    AND zip_code_a.text_val = $user_plz
    AND acos( sin( coord_b.lat * PI( ) /180 ) * sin( coord_a.lat * PI( ) /180 ) + cos( coord_b.lat * PI( ) /180 ) * cos( coord_a.lat * PI( ) /180 ) * cos( coord_b.lon * PI( ) /180 - coord_a.lon * PI( ) /180 ) ) *6380 < $user_umkreis
    ORDER BY Entfernung");

    DANN DIE AUSGABE (erstmal nur ne unschöne Liste):
    if(mysql_num_rows($result1))
             { 
                
            while($row = mysql_fetch_assoc($result1))
             {
             $zip_code_b=$row['zip_code_b'];
             echo $zip_code_b;
             echo "<br />";
             echo round($row['Entfernung'],2)." km entfernt";
             echo "<br /><br />";
                   
           
            }
            }
            else {
            echo"Keine Einträge vorhanden";
            }

    Soweit so gut...

    Aber wie bastel ich nun den Vergleich da mit rein?

    Anfragen wie
    $result2 = mysql_query("SELECT Center FROM center_datenbank WHERE PLZ LIKE $zip_code_b");
             $current = mysql_fetch_assoc($result2);
             echo $current;

    die ich in die obere WHILE Schleife mit reinpacke funktionieren nicht.

    Kommt nur:
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in...
    in der Zeile $current = mysql_fetch_assoc($result2);

    Wisst Ihr Rat?

    Norbert

     
    • BruFi

      BruFi - 2008-06-02

      warum machste das nicht mit einem left join

      z.B.

      JOIN geodb_coordinates coord_a ON coord_a.loc_id = zip_code_a.loc_id 
      JOIN geodb_textdata AS zip_code_b ON zip_code_b.text_type =500100000 
      JOIN geodb_coordinates coord_b ON coord_b.loc_id = zip_code_b.loc_id 
      [..]
      JOIN center_datenbank ON zip_code_a.text_val =  center_datenbank.PLZ
      [..]
      WHERE zip_code_a.text_type =500100000 
      AND zip_code_a.text_val = $user_plz 

      vllt. geht das ja...

       

Log in to post a comment.