|
|
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 09:11 : MySQL for Hatkeinplan |
|
|
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: |
| 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 |
|
| Nach oben |
|
 |
e-fee


: 08.05.2007 : 3337
|
| : 19.01.2012, 10:04 : MySQL for Hatkeinplan |
|
|
| Ist auch Quatsch. Mach mal die Klammer wieder hinter dem WHERE zu! Keine Gewähr, dass nicht noch mehr falsch ist. |
|
| Nach oben |
|
 |
empty

: 11.02.2005 : 46
|
| : 19.01.2012, 10:17 : MySQL for Hatkeinplan |
|
|
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) |
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 15:57 : MySQL for Hatkeinplan |
|
|
MySQL meldet:
You can't specify target table 'tabelle-b' for update in FROM clause
 |
|
| Nach oben |
|
 |
empty

: 11.02.2005 : 46
|
| : 19.01.2012, 16:13 : MySQL for Hatkeinplan |
|
|
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... |
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 16:16 : MySQL for Hatkeinplan |
|
|
Okay, hab ich mir fast schon gedacht.
Also müsste ich eine kurze PHP-Datei tippen.
Wie sähe die aus? |
|
| Nach oben |
|
 |
empty

: 11.02.2005 : 46
|
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 16:34 : MySQL for Hatkeinplan |
|
|
Hilft mir leider nicht. Ich kontruiere jedesmal Mist...
Bin auch gern bereit eventuelle Mühen per PayPal zu vergüten. |
|
| Nach oben |
|
 |
800XE


: 02.12.2004 : 5209 : XENEVU
|
| : 19.01.2012, 18:10 : MySQL for Hatkeinplan |
|
|
| Markus_S hat Folgendes 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 Folgendes geschrieben: |
Hilft mir leider nicht. Ich kontruiere jedesmal Mist...
Bin auch gern bereit eventuelle Mühen per PayPal zu vergüten. |
| Code: |
$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());
}
|
aber nur ... /Affilitiv/ ... innovativ |
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 18:39 : MySQL for Hatkeinplan |
|
|
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? |
|
| Nach oben |
|
 |
800XE


: 02.12.2004 : 5209 : XENEVU
|
| : 19.01.2012, 19:48 : MySQL for Hatkeinplan |
|
|
| Markus_S hat Folgendes 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? |
http://www.google.de/search?q=1978-07-21
wieso macht er mir keinen Taschenrechner?
ähm ... 7+21=28 .... von 78weg=50 =19050
| Code: |
$query .= ' SET W4 = "'.addslashes($line['W2']).'"';
$query .= ' WHERE W3 = "'.addslashes($line['W1']).'"';
|
aber nur ... /Affilitiv/ ... innovativ |
|
| Nach oben |
|
 |
800XE


: 02.12.2004 : 5209 : XENEVU
|
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 20:03 : MySQL for Hatkeinplan |
|
|
| 800XE hat Folgendes geschrieben: |
| Code: |
$query .= ' SET W4 = "'.addslashes($line['W2']).'"';
$query .= ' WHERE W3 = "'.addslashes($line['W1']).'"';
|
|
Super, klappt!
Schick mir deine PayPal-Adresse per PN.
Vielen Dank! |
|
| Nach oben |
|
 |
Markus_S

: 18.04.2007 : 52
|
| : 19.01.2012, 22:24 : MySQL for Hatkeinplan |
|
|
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: |
$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: http://www.selfphp.de/kochbuch/kochbuch.php?code=15 |
|
| Nach oben |
|
 |
800XE


: 02.12.2004 : 5209 : XENEVU
|
| : 20.01.2012, 10:06 : MySQL for Hatkeinplan |
|
|
| Markus_S hat Folgendes geschrieben: |
w2 ist "JJJJ-MM-TT"
w4 soll "MM-TT-JJJJ" |
| Code: |
$toks = explode( '-' , $oldDate );
$newDate = $toks[2] . '-' . $toks[1] . '-' . $toks[0];
|
//EDIT
nummerierung im ZUsammenBauer falsch .... siehe nächsten Post
aber nur ... /Affilitiv/ ... innovativ
Zuletzt bearbeitet von 800XE am 20.01.2012, 10:11, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |