Seite 1 von 2
MySQL for Hatkeinplan
Verfasst: 19.01.2012, 08:11
von Markus_S
Hallo mal wieder,
als MySQL-Leie schaffe ich es nach Stunden Rumprobieren nicht, folgenden Befehl zu formulieren...
1. Ich habe zwei Tabellen...
--------------------------------
tabelle-a
id | wert-1 | wert 2
--------------------------------
tabelle-b
id | wert-3 | wert-4
--------------------------------
2. Ich möchte den wert-2 zu wert-4 übertragen, wenn wert-3 gleich wert-1 ist.
Versucht habe ich folgendes:
Code: Alles auswählen
UPDATE tabelle-b SET wert-4 = (SELECT wert-2 FROM tabelle-a WHERE tabelle-b.wert-3 = tabelle-a.wert-1)
Scheint offensichtlich Quatsch zu sein... Fehlermeldung lautet:
Unknown column 'tabelle-b.wert-3' in 'where clause
Wer kann helfen? Ich zähle auf euch...
Danke
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 19.01.2012, 09:04
von e-fee
Ist auch Quatsch. Mach mal die Klammer wieder hinter dem WHERE zu! Keine Gewähr, dass nicht noch mehr falsch ist.
Verfasst: 19.01.2012, 09:17
von empty
Ne, Deine Antwort ist Quatsch.
Die Klammern sind schon richtig, bloß muss im Select natürlich auch tabelle-b mit angegeben werden, weil sie sonst im WHERE-Kontext unbekannt ist:
UPDATE tabelle-b SET wert-4 = (SELECT tabelle-a.wert-2 FROM tabelle-a,tabelle-b WHERE tabelle-b.wert-3 = tabelle-a.wert-1)
Verfasst: 19.01.2012, 14:57
von Markus_S
MySQL meldet:
You can't specify target table 'tabelle-b' for update in FROM clause

Verfasst: 19.01.2012, 15:13
von empty
Stimmt. Ich hatte mich nur auf den Fehler aus dem select-Teil der Query konzentriert und dabei übersehen, dass Du ja ein Update auf dieselbe Tabelle machst.
Das geht in MySQL auf schlichte Weise nicht...
Verfasst: 19.01.2012, 15:16
von Markus_S
Okay, hab ich mir fast schon gedacht.
Also müsste ich eine kurze PHP-Datei tippen.
Wie sähe die aus?
Verfasst: 19.01.2012, 15:17
von empty
Verfasst: 19.01.2012, 15:34
von Markus_S
Hilft mir leider nicht. Ich kontruiere jedesmal Mist...
Bin auch gern bereit eventuelle Mühen per PayPal zu vergüten.
Verfasst: 19.01.2012, 17:10
von 800XE
Markus_S hat geschrieben:--------------------------------
tabelle-a
id | wert-1 | wert 2
--------------------------------
tabelle-b
id | wert-3 | wert-4
-----------------------------
2. Ich möchte den wert-2 zu wert-4 übertragen, wenn wert-3 gleich wert-1 ist.
Markus_S hat geschrieben:Hilft mir leider nicht. Ich kontruiere jedesmal Mist...
Bin auch gern bereit eventuelle Mühen per PayPal zu vergüten.
Code: Alles auswählen
$query = ' SELECT * FROM TA';
$result = mysql_query($query) or die('<hr>'.$query.'<hr>'.mysql_error());
while( $line= mysql_fetch_array($result, MYSQL_ASSOC))
{
$query = ' UPDATE TB';
$query .= ' SET W4 = '. $line['W2'];
$query .= ' WHERE W3 = '. $line['W1'];
mysql_query($query) or die('<hr>'.$query.'<hr>'.mysql_error());
}
Verfasst: 19.01.2012, 17:39
von Markus_S
Okay, das scheint zu klappen... juhu
JEDOCH ist W2 eine Zahlenreiche mit Bindestrich (1978-07-21) und offenbar gelangt in Feld W4 dann "1950", also wurde eine Subtrahierung ausgeführt.
Sicherlich nur noch ein Syntax-Problem oder?
Verfasst: 19.01.2012, 18:48
von 800XE
Markus_S hat geschrieben:Okay, das scheint zu klappen... juhu
JEDOCH ist W2 eine Zahlenreiche mit Bindestrich (1978-07-21) und offenbar gelangt in Feld W4 dann "1950", also wurde eine Subtrahierung ausgeführt.
Sicherlich nur noch ein Syntax-Problem oder?
https://www.google.de/search?q=1978-07-21
wieso macht er mir keinen Taschenrechner?
ähm ... 7+21=28 .... von 78weg=50 =19050
Code: Alles auswählen
$query .= ' SET W4 = "'.addslashes($line['W2']).'"';
$query .= ' WHERE W3 = "'.addslashes($line['W1']).'"';
Verfasst: 19.01.2012, 18:52
von 800XE
www.google.de/search?hl=de&q=1978-7-21
die 7 ohne 0 dann gibts den Taschenrechner
Verfasst: 19.01.2012, 19:03
von Markus_S
800XE hat geschrieben:
Code: Alles auswählen
$query .= ' SET W4 = "'.addslashes($line['W2']).'"';
$query .= ' WHERE W3 = "'.addslashes($line['W1']).'"';
Super, klappt!
Schick mir deine PayPal-Adresse per PN.
Vielen Dank!
Verfasst: 19.01.2012, 21:24
von Markus_S
Mist...
Jetzt habe ich vor lauter Freude übersehen, dass das Format nicht übereinstimmt.
w2 ist "JJJJ-MM-TT"
w4 soll "MM-TT-JJJJ"
Darum müsste ich das noch umwandeln...
Code: Alles auswählen
$query = ' SELECT * FROM t1';
$result = mysql_query($query) or die('<hr>'.$query.'<hr>'.mysql_error());
while( $line= mysql_fetch_array($result, MYSQL_ASSOC))
{
$query = ' UPDATE t2';
$query .= ' SET w4 = "'.addslashes($line['w2']).'"';
$query .= ' WHERE w3 = "'.addslashes($line['w1']).'"';
mysql_query($query) or die('<hr>'.$query.'<hr>'.mysql_error());
}
Wie löse ich das?
Hier habe ich was gefunden aber da blicke ich nicht durch:
https://www.selfphp.de/kochbuch/kochbuch.php?code=15
Verfasst: 20.01.2012, 09:06
von 800XE
Markus_S hat geschrieben:w2 ist "JJJJ-MM-TT"
w4 soll "MM-TT-JJJJ"
Code: Alles auswählen
$toks = explode( '-' , $oldDate );
$newDate = $toks[2] . '-' . $toks[1] . '-' . $toks[0];
//EDIT
nummerierung im ZUsammenBauer falsch .... siehe nächsten Post