Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
UPDATE mit SELECT [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
UPDATE mit SELECT


 
Jofris
23-05-2008, 17:42 
 
Hallo zusammen,

ich bin leider nirgends fündig geworden und stehe seit Stunden auf dem Schlauch.

Ich versuche eine Zeile (einen Datensatz) aus der Tabelle 'Bert' in der Tabelle 'Ernie' zu überschreiben:


$ueberschreiben = mysql_query("UPDATE ernie AS e,
(SELECT * FROM bert WHERE id='$id') AS b
SET e.kekse=b.kekse)
WHERE e.id = b.id");


Was ich schon alles ausprobiert habe:


$ueberschreiben = mysql_query("UPDATE ernie, bert
SET ernie = bert
WHERE bert.id='$id'
AND ernie.id=bert.id");



Ich hoffe ihr könnt mir weiterhelfen!?
Wenn man anfängt herumzuexperimentieren ist das ein ganz schlechtes Zeichen.
Und an dem Punkt bin ich leider gerade.

Für eure Hilfe und Anregungen im Voraus vielen Dank!

Gruß
Jofris :)

 
UzumakiNaruto
23-05-2008, 19:19 
 
Original geschrieben von Jofris
Hallo zusammen,

ich bin leider nirgends fündig geworden und stehe seit Stunden auf dem Schlauch.

Ich versuche eine Zeile (einen Datensatz) aus der Tabelle 'Bert' in der Tabelle 'Ernie' zu überschreiben:


$ueberschreiben = mysql_query("UPDATE ernie AS e,
(SELECT * FROM bert WHERE id='$id') AS b
SET e.kekse=b.kekse)
WHERE e.id = b.id");


Was ich schon alles ausprobiert habe:


$ueberschreiben = mysql_query("UPDATE ernie, bert
SET ernie = bert
WHERE bert.id='$id'
AND ernie.id=bert.id");



Ich hoffe ihr könnt mir weiterhelfen!?
Wenn man anfängt herumzuexperimentieren ist das ein ganz schlechtes Zeichen.
Und an dem Punkt bin ich leider gerade.

Für eure Hilfe und Anregungen im Voraus vielen Dank!

Gruß
Jofris :)


$ueberschreiben = mysql_query("UPDATE ernie
SET ernie = ('SELECT * FROM bert WHERE id='$id')
WHERE bert.id='$id');


IRGENDWIE so ähnlich .. SO genau weiß ich das jetzt nicht aus dem kopf .. müsste ich mich jetzt selber schlau machen

 
PHP-Desaster
23-05-2008, 20:11 
 
$ueberschreiben = mysql_query("UPDATE ernie, bert
SET ernie = bert
WHERE bert.id='$id'
AND ernie.id=bert.id");
So ist es fast richtig. Siehe im Manual (etwas runter scrollen (http://dev.mysql.com/doc/refman/5.0/en/update.html#id4148180)):
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;

 
Jofris
24-05-2008, 14:39 
 
Hallo UzumakiNaruto,

vielen Dank für deinen Tipp. Werde ich ausprobieren! :)

Hallo PHP-Desaster,

vielen Dank für deine Hilfe! Dazu habe ich noch zwei Fragen:

1) Muss ich nach dem SET alle Spaltennamen explizit aufführen oder reicht es wenn ich sowieso alle Spalten überschrieben haben möchte nur die beiden Tabellennamen aufzuführen?

Also anstelle deiner Schreibweise:

SET ernie.spalte1=bert.spalte1, ernie.spalte2=bert.spalte2, ernie.spalte3=bert.spalte3


einfach für alle Spalten einer Tabelle:

SET ernie=bert


2) Durch deine WHERE-Schreibweise:

WHERE ernie.id=bert.id

werden da nicht sämtliche Zeilen (Datensätze), bei der die IDs der beiden Tabellen übereinstimmen abgeglichen.
Ich möchte doch nur eine einzelne Zeile überschreiben?


Für die weiter Hilfe im Voraus nochmals vielen, vielen Dank!


Gruß
Jofris :)

 
UzumakiNaruto
24-05-2008, 15:07 
 
Original geschrieben von Jofris
Hallo UzumakiNaruto,

vielen Dank für deinen Tipp. Werde ich ausprobieren! :)

Hallo PHP-Desaster,

vielen Dank für deine Hilfe! Dazu habe ich noch zwei Fragen:

1) Muss ich nach dem SET alle Spaltennamen explizit aufführen oder reicht es wenn ich sowieso alle Spalten überschrieben haben möchte nur die beiden Tabellennamen aufzuführen?

Also anstelle deiner Schreibweise:

SET ernie.spalte1=bert.spalte1, ernie.spalte2=bert.spalte2, ernie.spalte3=bert.spalte3


einfach für alle Spalten einer Tabelle:

SET ernie=bert


2) Durch deine WHERE-Schreibweise:

WHERE ernie.id=bert.id

werden da nicht sämtliche Zeilen (Datensätze), bei der die IDs der beiden Tabellen übereinstimmen abgeglichen.
Ich möchte doch nur eine einzelne Zeile überschreiben?


Für die weiter Hilfe im Voraus nochmals vielen, vielen Dank!


Gruß
Jofris :)

UPDATE erne e, bert b SET
e.feld1 = b.feld1,
e.feld2 = b.feld2,
e.feld3 = b.feld3
WHERE e.feld0 = 1;

UPDATE erne e, bert b SET
e.feld1 = b.feld1,
e.feld2 = b.feld2,
e.feld3 = b.feld3
WHERE e.feld0 = 4;


dann müsstest du das SO machen ;-)

 
Jofris
24-05-2008, 15:19 
 
Hallo UzumakiNaruto,

vielen Dank, das ist aber mal eine schnelle Antwort :)

Werde ich gleich einmal ausprobieren.


Danke! Gruß
Jofris :)

 
Jofris
24-05-2008, 15:41 
 
Hallo zusammen,

vielen Dank! Mit eurer Hilfe hat es jetzt endlich wie folgt geklappt:

$ueberschreiben = mysql_query("UPDATE ernie a, bert b
SET a.spalte1= b.spalte1,
a.spalte2= b.spalte2,
a.spalte3= b.spalte3
WHERE b.id='$id'
AND a.id=b.id");

Nochmal vielen Dank und schönes Wochenende!!! :cool:


Gruß
Jofris :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:29 Uhr.