Benutzer mit den meisten Antworten
SQL Fehler: Der mehrteilige Bezeichner ... konnte nicht gebunden werden

Frage
-
Hi,
Ich hänge mich mal an den etwas älteren Thread an, in der Hofnung jemand hat eine Lösung für mich.
Ich habe schon mal grundsätzlich dasselbe Problem wie der Threadstarter, sprich ich bekomme beim ausführen meines Scripts die folgende Fehlermeldung:
"Der mehrteilige Bezeichner 'table-2.address' konnte nicht gebunden werden."Ich habe folgende 2 Tabellen:
Table-1
https://imgur.com/70wg1IX
Table-2
https://imgur.com/jAsL5SP
Und möchte jetzt das aus Table-1 die Inhalte der entsprechenden Kunden(vergleich nach acc_num) für Table-1.mail,Table-1.address,Table-1.city usw. gelöscht werden, wenn die
entsprechende Table-2.mail=2 oder Table-2.address=2 des Kunden (acc_num) eben eine 2 enthält.Dazu habe ich das folgende script:
select * from database
UPDATE table-1
SET
table-1.address = CASE WHEN table-2.address=2 THEN NULL ELSE table-1.address END,
table-1.city = CASE WHEN table-2.city=2 THEN NULL ELSE table-1.city END,
table-1.plz = CASE WHEN table-2.plz=2 THEN NULL ELSE table-1.plz END,
table-1.country = CASE WHEN table-2.country=2 THEN NULL ELSE table-1.country END,
table-1.creditcard = CASE WHEN table-2.creditcard=2 THEN NULL ELSE table-1.creditcard END,
table-1.mail = CASE WHEN table-2.mail=2 THEN NULL ELSE table-1.mail END
WHERE table-1.acc_num
IN(SELECT table-2.acc_num FROM table-2)
Wie gesagt bekomme ich aber beim starten des scripts die Fehlermeldung:
"Der mehrteilige Bezeichner 'table-2.address' konnte nicht gebunden werden."Hat jemand eine Idee woran es hackt... ich checks nicht so wirklich...DANKE.- Bearbeitet Chavelle Dienstag, 28. Mai 2019 20:03
- Geteilt Stefan FalzModerator Mittwoch, 29. Mai 2019 20:32 Originalthread war abgeschlossen
Antworten
-
Hallo Chavelle,
wie Olaf würde ich empfehlen einen neuen Beitrag zu eröffnen, denn dieser ist bereits lange im "Ruhestand".
Für oben würde gelten, dass Du die beiden Tabellen verknüpfen müsstest, in etwa:
UPDATE [table-1] SET [table-1].address = CASE WHEN [table-2].address=2 THEN NULL ELSE [table-1].address END, [table-1].city = CASE WHEN [table-2].city=2 THEN NULL ELSE [table-1].city END, [table-1].plz = CASE WHEN [table-2].plz=2 THEN NULL ELSE [table-1].plz END, [table-1].country = CASE WHEN [table-2].country=2 THEN NULL ELSE [table-1].country END, [table-1].creditcard = CASE WHEN [table-2].creditcard=2 THEN NULL ELSE [table-1].creditcard END, [table-1].mail = CASE WHEN [table-2].mail=2 THEN NULL ELSE [table-1].mail END -- Verknüpfen der beiden Tabellen via INNER JOIN FROM [table-1] INNER JOIN [table-2] ON [table-1].acc_num = [table-2].acc_num;
(Ich habe die Namen in Klammern gesetzt, da es sich dabei wegen des Minus um keine regulären Bezeichner handelt.
Gruß Elmar
- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 31. Mai 2019 07:36
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 7. Juni 2019 06:32
Alle Antworten
-
Ich hänge mich mal an den etwas älteren Thread an
Da wäre es echt besser, einen neuen, eigenen Thread zu starten; sich "dran hängen" macht keinen Sinn
Der mehrteilige Bezeichner 'table-2.address' konnte nicht gebunden werden."
Weil es keine FROM Klausel gibt, wo Du die Tabelle "table-2" adressierst. Woher soll also der SQL Server wissen, wie die Tabellen zueinander in Beziehung stehen?
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hallo Chavelle,
wie Olaf würde ich empfehlen einen neuen Beitrag zu eröffnen, denn dieser ist bereits lange im "Ruhestand".
Für oben würde gelten, dass Du die beiden Tabellen verknüpfen müsstest, in etwa:
UPDATE [table-1] SET [table-1].address = CASE WHEN [table-2].address=2 THEN NULL ELSE [table-1].address END, [table-1].city = CASE WHEN [table-2].city=2 THEN NULL ELSE [table-1].city END, [table-1].plz = CASE WHEN [table-2].plz=2 THEN NULL ELSE [table-1].plz END, [table-1].country = CASE WHEN [table-2].country=2 THEN NULL ELSE [table-1].country END, [table-1].creditcard = CASE WHEN [table-2].creditcard=2 THEN NULL ELSE [table-1].creditcard END, [table-1].mail = CASE WHEN [table-2].mail=2 THEN NULL ELSE [table-1].mail END -- Verknüpfen der beiden Tabellen via INNER JOIN FROM [table-1] INNER JOIN [table-2] ON [table-1].acc_num = [table-2].acc_num;
(Ich habe die Namen in Klammern gesetzt, da es sich dabei wegen des Minus um keine regulären Bezeichner handelt.
Gruß Elmar
- Als Antwort vorgeschlagen Olaf HelperMVP Freitag, 31. Mai 2019 07:36
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 7. Juni 2019 06:32