Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Update mit Select
flyhigh83 - Fr 01.04.11 16:50
Titel: Update mit Select
Hallo,
ich habe da mal eine Frage. Ich muss Designtechnisch einiges ändern und muss dafür jetzt viele Daten umziehen und umbauen von der Struktur. Jetzt wollte ich mir eine Updateanweisung basteln aber ich hänge gerade noch an meinem Select, da der mir anscheinend mehrere Werte zurückliefert.
Code:
SQL-Anweisung
1: 2: 3: 4: 5: 6:
| Update Tabelle3 as x SET conAnbieter = (SELECT Tabelle1.Spalte20 FROM stellplatz INNER JOIN Tabelle2 ON Tabelle1.Spalte1 = Tabelle2.Spalte2 INNER JOIN Tabelle3_Copy ON Tabelle2.Spalte1 = Tabelle3_Copy.Spalte1 WHERE (Tabelle2.Spalte5 IS NULL) AND (x.Spalte1 = Tabelle3_Copy.Spalte1)) |
Was mache ich an dem Select falsch. Ich muss ja irgend wie wieder auf den Gerade angefassten Datensatz aus meiner UpdateTabelle verweisen.
Moderiert von
Christian S.: SQL-Tags hinzugefügt
Trashkid2000 - Fr 01.04.11 21:54
Hallo,
also Du musst auf jeden Fall sicherstellen, dass bei dem Select nur ein Wert rausfällt. Ansonsten geht es nicht.
Selbst wenn praktisch nur ein Wert rauskommt, aber theoretisch doch mehrere, klappt das nicht mehr.
Vielleicht würde Dir bei dem Select ein "TOP 1" helfen.
Aber dann muss wirklich sicher sein, dass bei den (meheren) Resultaten immer die gleichen rausfallen!!
ps: die Benamsung der Tabellen/ Spalten trägt nicht wirklich zum Verstädnis bei. Auch wenn es hier warscheinlich nur zur Anschauung war. Ein Bild sagt da viel mehr.
LG
flyhigh83 - Mo 04.04.11 08:45
Morgen,
danke das mit dem TOP hat micht mal kurzfristig auf den Richtigen Weg geleitet.
Ich habe da es eine MYSQL Datenbank ist an das ende einfach ein "LIMIT 1" gesetzt.
Theoretisch hätte bei mir auch nicht mehrere Datensätze herauskommen können. Da die Spalte 1 jeweils die ID (Primärschlüssel) der Tabelle ist.
Ich glaube es liget irgendwie an den Joins, dass er da irgendwelche Verbingungen herstellt zu den anderen Tabellen, und somit die ID dann nichtmehr eindeutig ist.
Danke aber mal.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!