phpbar.de logo

Mailinglisten-Archive

[php] OT, mysql-Frage

[php] OT, mysql-Frage

Norbert Pfeiffer norbert at itbw.de
Don Mai 6 15:48:29 CEST 2004


Hi,

> UPDATE table1, table1 AS table2
>    SET table1.feld1 = table2.feld2
>  WHERE table1.id = [id]
>    AND table2.id = [id]
<lol>
mehr als Syntaxfehler wird man aus solchen Konstrukten
nicht erhalten, weil keine bekannte Datenbank die
Manipulation mehrerer Tabellen in einem Query zulaesst,
auch wenn es nur eine Kopie oder Referenz ist.
Soweit zumindestens die 'graue Theorie' ... ;-)

Wenn man etwas austauschen will, braucht man zunaechst
einmal die Identifikation der Tauschpartner, z.B. zwei
Reccord-ID's.
Nun kann man einen Select absetzen, das Ergebnis tauschen
und wieder Updaten. Das ergibt auch wieder 2 Querys.

z.B.:
<?
$ID = array(2, 4); /* Reccord-ID's */
sort($ID);  /* Ordnung absichern */
$ids = implode($ID, ',');
$query = "SELECT KatBez FROM kategorien
 WHERE KatNr IN ($ids) ORDER BY KatNr";
$EG = $DB->get_data($query, '*');
/* Argument '*' erzeugt einspaltiges Array */
krsort($EG);  /* vertauschen der Werte */
$i = 0;
foreach($EG as $val) {
    $query = "UPDATE kategorien SET KatBez = '$val'
 WHERE KatNr = ".$ID[$i];
    echo $query."\n";
    $ok = $DB->get_access($query);
    $i++;
}
?>


m. b. G. Norbert
_____________________
normal:  02686-987103
Notruf:  0177-2363368
---------------------
e.o.m.


php::bar PHP Wiki   -   Listenarchive