Lewbie: Geht das (siehe Posting) auch als eigene Query?

Hallo,

ich frage mich gerade, ob meine kleine PHP-Datei nicht auch in eine einzige Query zu fassen sein könnte.

Hier sind mal wieder die sql-Profis gefragt.

Ich nutze mysql5.

  
$query_select="select m.ID, k.Nummer from _table1 m  
              JOIN table2 k ON m.ID=k.ID  
              ";  
  
$result_select=mysql_query($query_select);  
if ($result_select==FALSE)  
{  
     die(mysql_error($db));  
}  
while ($row_select=mysql_fetch_row($result_select))  
{  
  
     $query_update="update table1 set  
                   Nummer = \"$row_select[1]\"  
                   where ID = \"$row_select[0]\"  
                   ";  
  
     $result_update=mysql_query($query_update);  
     if ($result_update==FALSE)  
     {  
          die(mysql_error($db));  
     }  
  
} // end while  
  
echo("fertig");  

1. Versuch von mir: (ungetestet)

update table1 set Nummer = (select m.ID, k.Nummer from _table1 m
              JOIN table2 k ON m.ID=k.ID) where ID = und ab hier, falls der Anfang überhaupt stimmt, weiß ich nicht mehr weiter...

Grüße, lew

  1. Hallo,

    ich frage mich gerade, ob meine kleine PHP-Datei nicht auch in eine einzige Query zu fassen sein könnte.

    » $query_select="select m.ID, k.Nummer from _table1 m  
    
    >               JOIN table2 k ON m.ID=k.ID  
    >               ";  
      
      
    
    > $result_select=mysql_query($query_select);  
    > while ($row_select=mysql_fetch_row($result_select))  
    > {  
    >      $query_update="update table1 set  
    >                    Nummer = \"$row_select[1]\"  
    >                    where ID = \"$row_select[0]\"  
    >                    ";  
    
    
    UPDATE  
        table1 m  
    INNER JOIN  
        table2 k  
    ON  
        m.ID = k.ID  
    SET  
        m.Nummer = k.Nummer  
    
    

    Grundsätzlich gilt für dieses Statement wie für Dein bisheriges Vorgehen:
    Wenn einem Datensatz aus m mehr als ein Datensatz aus k mit unterschiedlichen Werten in der Spalte Nummer zugeordnet sind, dann ist es zufällig, welcher dieser Werte am Ende der Operation in m stehen wird.

    Freundliche Grüße

    Vinzenz

    1. Grundsätzlich gilt für dieses Statement wie für Dein bisheriges Vorgehen:
      Wenn einem Datensatz aus m mehr als ein Datensatz aus k mit unterschiedlichen Werten in der Spalte Nummer zugeordnet sind, dann ist es zufällig, welcher dieser Werte am Ende der Operation in m stehen wird.

      Hallo  Vinzenz,

      danke für Deine Hilfe.

      Ja, da hast Du recht. Gibt es eine Möglichkeit, zu kontrollieren, ob da eine eindeutige Zuordnung besteht? Es sollte theoretisch so sein, dass es eindeutig ist, aber Du weißt ja: Die Praxis hält sich nicht immer an die Theorie.

      Gruß, Lew

      1. Hallo,

        Grundsätzlich gilt für dieses Statement wie für Dein bisheriges Vorgehen:
        Wenn einem Datensatz aus m mehr als ein Datensatz aus k mit unterschiedlichen Werten in der Spalte Nummer zugeordnet sind, dann ist es zufällig, welcher dieser Werte am Ende der Operation in m stehen wird.

        Ja, da hast Du recht. Gibt es eine Möglichkeit, zu kontrollieren, ob da eine eindeutige Zuordnung besteht?

        ja klar: jeweils ein eindeutiger Index auf die entsprechenden Spalten erledigt das zuverlässig.

        Freundliche Grüße

        Vinzenz