Fehler Sortierung kann icht aufgelöst werden

update RLB_REBUKOPF_COPY set ZB_CODE = (select CODE
from bk_zb_copy, RLB_REBUKOPF_COPY
where RLB_REBUKOPF_COPY.MANDANT = bk_zb_copy.MANDANT
and ZAHLUNGSBEDINGUNG = BESCHREIBUNG
and BK_STATUS = ‚freigegeben‘)

Also das da oben ist die Abfrage die ich starten möchte. Problem ist das ich eine Felhermeldung bekomme die besagt das die Sortierung für das eqal to Statement nicht aufgelöst werden kann.

Hab mich da schon etwas schlau gemacht und herrausgefunden das das angeblich daran liegt das die beiden Tabellen unterschiedliche Sortierungen haben. Hab aber beide nun auf Standart zurückgesezt. Sind auch in der selben Datenbank zu finden.

Hoffe meine Beschreibung reicht aus zu dem Problem.

P.s. habs auch schon mit Joinen versucht macht aber logischerweise keinen Unterscheid

Hi,

probier mal bitte so:

UPDATE RLB\_REBUKOPF\_COPY 
SET ZB\_CODE = (SELECT CODE
 FROM bk\_zb\_copy 
 WHERE RLB\_REBUKOPF\_COPY.MANDANT = bk\_zb\_copy.MANDANT
 AND ZAHLUNGSBEDINGUNG = BESCHREIBUNG
 AND BK\_STATUS = 'freigegeben')

Des weiteren… welche Art Datenbank MySql? Oracle? Wenn Oracle welche ORA-Fehlermeldung ?

Gruß
Andreas

Is ja im endeffekt das selbe was ich geschreiebn hab nur eingerückt. Und ja die Datenbank hatte ich vergessen zu schreiben haben MsSql. Also deine Lösung war es nicht. Trozdem danke

bitte genauer lesen!
die vorige lösung war aber bitte komplett anders - genau lesen ist von vorteil.

dein problem: du machst ein update auf eine tabelle und gibst im subselect in der from-klausel die tabelle nochman, allerdings ohne erkennbare sinnvolle where-klausel. sprich: das subselect liefert sämtliche daten, die bei einem join deiner tabellen kommen können. das subselect soll aber pro datensatz in deiner haupttabelle nur einen datensatz liefern. desshalb fehlt in der from-klausel des subselects meines vorposters auch die haupttabelle. die datenbank nimmt dann automatisch den jeweiligen datensatz aus der haupttabelle her und joint nur mit diesem. damit sollte das statement eigentlich funktionieren.

nachprüfen kann das allerdings keiner, da du dich beharrlich weigerst, bekannt zu geben, welche db-software in welcher version du verwendest und wie die tabellen aufgebaut sind (sowohl struktur als auch datenverteilung). wie genau du dir erhoffst, da sinnvolle antworten zu bekommen, ist mir rätselhaft. rüpelhafte kommentare zu sinnvollen antworten werden dir dabei sicher nicht weiterhelfen.

lg
erwin

Tut mir leid wenn meine antwort etwas rüpelhat rüberkam das war so nicht gemeint nur hatte ich auch seine Lösung Ausprobiert und dies funktionierte nicht. Version der Datenbank kann ich dir leider nicht sagen da ich nicht der Admin bin und er mom nicht da ist weis ha´lt nur das es ne MSSQL Datenbank ist. Und bin noch etwas neu in Datenbanken d.h. weis ich nicht genau was du von mir willst bezüglich Datenbankstruktur. Falls du Pk und Sk meinst sind leider keine Vorhanden und Sortierung ist auch gleich und die Felder die in der Where klausel abgeglichen werden sollen sind auch vom selben Datentyp nur das der Mandant der einen Tabelle um 20 zeichen kürzer ist

hi

ok, mysql ist schon mal was

bez. tabellenstruktur: ich meine damit, welche spalten die tabellen haben. in deinem statement sind einige felder drinnen, bei denen man nur raten kann, in welcher tabelle die vorkommen. damit kann man das problem bei sich nicht nachstellen und kann lediglich vermutungen anstellen.

offensichtlich ist, dass du folgende tabellen hast:

rlb_rebukopf_copy
zb_code
mandant

bk_zb_copy
code
mandant
bk_status

wo genau die spalten zahlungsdedingung und beschreibung hingehören, kann man nur raten. ich gebe allerdings zu, dass das nicht so wesentlicht.

trotzdem wäre es gut, wenn du mal den genauen aufbau deiner tabellen posten würdest, also tabellenname sowie sämtlich spalten, die darin vorkommen, inkl. datentyp (also number, varchar etc.)

mit pk und sk meinst du vermutlich primary und secondary keys - die sind hier allerdings vermutlich egal (kenne aber mysql nicht so gut)

zusätzlich wäre es hilfreich, wenn du nur ganz kurz beschreibst, was denn genau in den tabellen drinnen ist. vor allem interessant ist die datenmenge: sind beide tabellen gleich gross oder ist eine davon nur eine schlüsseltabelle? kannst du beispielwerte liefert?

all das wäre hilfreich, damit irgendwer im forum das problem nachstellen kann. dann kannst du auch eine lösung erwarten. vergiss dabei nicht, dass alle potentiellen helfer das unentgeltlich tun - sprich, sie opfern ihre freizeit - und daher nur im geringen umfang detektivische ermittlungen anstellen wollen.

lg
erwin

Hi,

probier mal bitte so:

UPDATE RLB\_REBUKOPF\_COPY
SET ZB\_CODE = (SELECT min(CODE)
 FROM bk\_zb\_copy
 WHERE RLB\_REBUKOPF\_COPY.MANDANT =
bk\_zb\_copy.MANDANT
 AND ZAHLUNGSBEDINGUNG = BESCHREIBUNG
 AND BK\_STATUS = 'freigegeben')

Mit ein Bisserl Glück liefert das dann wenigstens ein Ergebnis. Es klingt zumindest so als würdest du immer noch mehr als einen Datensatz im Subselect bekommen, und das sollte sich durch das MIN erledigen. Es müsste dann natürlich durch das ersetzt werden, was du da wirklich haben willst.

Jens