ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
492
492
EMPFEHLEN
-
Hallo,
ich versuche ein Feld aus einer Tabelle (T1) mit einem Wert aus einer anderen Tabelle (T2) füllen zu lassen, wenn bestimmte Bedingungen erfüllt sind.
Bedingungen:
1. Die ID's (LID = FKLID) müssen die selben sein.
2. Der Inhalt aus T1.Feld_1 muss ungleich T2.Feld_1 sein!
Wenn dies der Fall ist, sollte der Wert aus T1.Feld_1 in das Feld T2.Feld_2 geschrieben werden.
Bei meinem letzten Versuch, habe ich mich an einem Beitrag aus diesem Forum orientiert. Bekommen jedoch immer folgende Fehlermeldung:
"ora-01427 single-row subquery returns more than one row"
Der Versuch sah wie folgt aus:
Code :1 2 3 4 5 6 7
UPDATE T2 SET T2.Feld_1 = ( SELECT T1.Feld_1 FROM T1 WHERE T1.Feld_1 <> T2.Feld_1 AND T2.LID = T1.FKLID )
Hat jemand eine Idee, wo der Fehler liegen kann? Bin über jede Hilfe dankbar!
MFG
-
Jepp. Das Subquery liefert pro T2.LID mehrere Resultate. Du musst das irgendwie auf eines beschränken.
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke erstmal für die Antwort!
Da ich die LIDs kenne, die betroffen sind, habe ich das auch schon mal versucht, die T2.LID und die T1.FKLID mit den jeweiligen Werten zu versehen, z.B.: T2.LID = 41 and T1.FKLID = 41. Hat aber leider auch nichts gebracht. Es erschien die selbe Meldung.
Oder meinst du was anderes****?
-
Also, wenn du nur das Subquery ausführst
Dann darf da nur eine Zeile erscheinen. Wenn du mehrere hast, dann musst du die Daten weiter eingrenzen (WHERE oder/und GROUP BY).Code sql:1 2 3 4
SELECT T1.Feld_1 FROM T1 WHERE T1.Feld_1 <> T2.Feld_1 AND T1.FKLID = 42
Das Subquery darf nur 1 Zeile haben - ansonsten kommt dein Fehler. Oracle weiss dann nicht, welchen der Werte es verwenden soll.Geändert von Yaslaw (25.01.12 um 14:07 Uhr) Grund: Mein Gott, welch Rechtschreibung....
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
denke wenn du das Subquery weiter einschränkst sollte es gehen
SELECT T1.Feld_1
FROM T1
WHERE T1.Feld_1 <> T2.Feld_1
AND T2.LID = T1.FKLID AND T1.FKLID = 42
du darfst auch wenn du weiter einschränkst NIE den Join der beiden Tabellen vergessen
sonst hat Oracle keine Ahnung welcher der DS er nehmen soll
Mfk
-
@tkeuk
Nunja, er hat bei der id=42 das Problem. Einfach die Menge wieder auf id=42 bringt noch keinen Mehrwert. Er braucht weitere Kriterien oder ein GROUP BY oder sowas.
Das von dir Fett markierte Teil ist soweit Richtig. Aber eignet sich nicht wenn er nur das Subquery testen soll. Im Gesammtkontex ist der ID-Vergleich soweit richtig, nicht jedoch der Vergleich auf 42, da dies ja nur ein Fall betrifft und für die restlichen Daten falsch ist.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
@Yaslaw
wo du recht hast hast du recht
doch ich habe es im Kontext als Einzelquery angeschaut, sorry
Ähnliche Themen
-
[Oracle 10g] Abfrage über zwei Tabellen
Von Dr_Doom im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 02.06.09, 16:05 -
SQL Abfrage über zwei Tabellen (Oracle)
Von pam1906 im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 04.04.07, 16:13 -
[Oracle] Update über zwei Tabellen
Von m3000 im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 03.10.06, 15:34 -
[SQL] Update über zwei Tabellen
Von Hedonismbot im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 20.01.05, 20:57 -
Update über zwei Tabellen
Von kesnw im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 23.04.04, 19:35





Zitieren

Login





