none
SQL Fehler: Der mehrteilige Bezeichner ... konnte nicht gebunden werden RRS feed

  • 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
    Dienstag, 28. Mai 2019 20:00

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

    Mittwoch, 29. Mai 2019 17:37
    Beantworter

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]

    Mittwoch, 29. Mai 2019 06:01
  • 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

    Mittwoch, 29. Mai 2019 17:37
    Beantworter
  • Danke euch!!! es hat geklappt damit.

    Ja stimmt, ich hätte in dem neuen Thread, diesen alten ja auch verlinken können ;) aber darauf bin ich gestern abend nicht mehr gekommen.

    Super dass Ihr dennoch so schnell geantwortet habt.

    Mittwoch, 29. Mai 2019 20:08