Geht das (siehe Posting) auch als eigene Query?
Lewbie
- datenbank
0 Vinzenz Mai0 Lewbie
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
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
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
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