DB UPDATE funktioniert nicht !

Guten Tag,

weiß jemand warum dieses Script nicht geht ?
Es wird nichts eingetragen.

<?php $conn = mysql_connect("localhost","xxx","xxx");
$sql = mysql\_query("UPDATE orders\_products AS t SET bestellnummer = ( SELECT bestellnummer FROM orders\_products\_attributes WHERE orders\_id = orders\_id )"); mysql\_close($conn); ?\> Danke !

Guten Tag,

weiß jemand warum dieses Script nicht geht ?
Es wird nichts eingetragen.

<?php :blush:conn = mysql_connect("localhost","xxx","xxx");
$sql = mysql\_query("UPDATE orders\_products AS t SET bestellnummer = ( SELECT bestellnummer FROM orders\_products\_attributes WHERE orders\_id = orders\_id )"); mysql\_close($conn); ?\>

die where clause sieht sehr suspekt aus da fehlt ein bezug zu orders_products … du solltest nochmal nach subselect googeln und mit deinen tabellen abgleichen.

eigendlich woltte ich das nur abgleichen. Die orders_id gibt es in beiden Tabellen. Für jeden Datensatz eine andere aber in beiden Tabellen die gleiche. Die bestellnummer steht nur in einer Tabelle und soll für den jeweiligen Datensatz auch in die andere Tabelle. Hab den Befehl so aus mysql rausgenommen und mal rumprobiert. Gegooglet hab ich. Hilft mir aber leider nicht weiter.

kleine Gegenfrage
wozu willst Du die Informationen duplizieren?
Wenn Du einmal verstanden hast, wie eine LEFT JOIN Abfrage funktioniert, dann brauchts das doch garnicht mehr…?

ich verstehe auch nicht so ganz, was das „as t“ in Deiner Abfrage soll…
Sowas braucht man ja eigentlich nur dann, wenn man mehrmals die gleiche tabelle benötigt oder eben auf select-ebene um bei joins gleichnamige Spalten zu unterscheiden…
(Und evtl noch in einer Hand voll fällen, die ich bisher noch nicht anwenden musste)

Grüße
Munich

PS: ich würde immer dazu raten es so zu machen:
$sql = „SELECT BLABLABLA“;
$query = mysql_query($sql) or die(„Fehler in SQL: $sql“);

machts viel leichter - die Ausgabe kann man dann wenn man zu faul ist selbst ne Fehlerausgabe zu basteln in den phpmyadmin einkopieren und sieht viel schneller, woran es scheitern könnte…

$sql = mysql_query(„SELECT orders_id, bestellnummer FROM orders_products_attributes“);
while($row = mysql_fetch_array($sql))
{
$up = mysql_query(„UPDATE orders_products SET bestellnummer = '“.$row[‚bestellnummer‘]."’ WHERE orders_id = ".$row[‚orders_id‘]);
}

So gehts. Vielen dank an alle !

Hallo,

versuche mal

$sql = mysql_query(„UPDATE orders_products AS t1 SET
t1.bestellnummer = ( SELECT t2.bestellnummer FROM
orders_products_attributes as t2 WHERE t1.orders_id = t2.orders_id )“);

Ich würde auch drauf tippen, das das bei großen Tabellen wesentlich schneller ist als die PHP Variante mit alle Abrufen und massig UPDATE zu senden.
Ggfs. hänge noch ein or die(mysql_error()) an, dann bekommst du auch einen evtl. Fehler. In deiner Version wird er wohl orders_id im SELECT nicht der entsprechenden Tabelle zuordnen können.

Alex