Announcement

Collapse
No announcement yet.

Kann keine Beziehung zwischen 2 Tabellen herstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann keine Beziehung zwischen 2 Tabellen herstellen

    Hallo zusammen,

    komme momentan nicht weiter. Ich möchte zwischen zwei Tabellen eine Beziehung herstellen, was aber nicht funktioniert.

    tbl_Kunden
    tbl_angebot

    SQL Server Management Studio meldet mir:

    "- Beziehung "FK_angebot_kunden" kann nicht erstellt werden.
    Die ALTER TABLE-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_angebot_kunden". Der Konflikt trat in der "meinekunden"-Datenbank, Tabelle "dbo.kunden", column 'kd_id' auf."

    Zu anderen Tabellen kann ich eine Beziehung aufbauen, allerdings erkenn ich kein unterschied.

    Folgend die zwei Tabellen.

    tbl_Kunden

    Code:
    USE [meinekunden]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[kunden](
    	[kd_id] [smallint] IDENTITY(1,1) NOT NULL,
    	[kunde] [varchar](50) NULL,
    	[zhd] [varchar](50) NULL,
    	[strasse] [varchar](50) NULL,
    	[ort] [varchar](50) NULL,
    	[telefon] [varchar](50) NULL,
    	[fax] [varchar](50) NULL,
    	[email] [varchar](50) NULL,
     CONSTRAINT [PK_kunden] PRIMARY KEY CLUSTERED 
    (
    	[kd_id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF

    tbl_angebot

    Code:
    USE [meinekunden]
    GO
    
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[angebot](
    	[an_id] [smallint] IDENTITY(1,1) NOT NULL,
    	[kd_id] [smallint] NOT NULL,
    	[datum] [smalldatetime] NOT NULL,
    	[kommentar] [text] NOT NULL,
    CONSTRAINT [PK_angebot] PRIMARY KEY CLUSTERED 
    (
    	[an_id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF

  • #2
    Sieht aus, als würde bereits eine Einschränkung mit diesem Namen bestehen. Ich habe das mal mit den beiden Scripts aus deiner Beschreibung probiert und da geht es einwandfrei. An den Tabellen oder Feldern liegt es also nicht.

    bye,
    Helmut

    Comment


    • #3
      Hallo Balthazar,

      das wäre auch meine Vermutung. Kontrollier es mal mit

      SELECT Object_ID('FK_angebot_kunden')

      Wenn eine ID geliefert wird, ist eine Beziehung unter der Bezeichnung bereits vorhanden.

      Olaf
      Olaf Helper

      <Blog> <Xing>
      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

      Comment


      • #4
        Hallo balthazar,

        "- Beziehung "FK_angebot_kunden" kann nicht erstellt werden.
        Die ALTER TABLE-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung "FK_angebot_kunden". Der Konflikt trat in der "meinekunden"-Datenbank, Tabelle "dbo.kunden", column 'kd_id' auf."
        So wie es aussieht, hast Du ein oder mehrere Angebote in der Tabelle Angebote, die "keinen" passenden Kunden (Alte Kundennummer, die nicht mehr existiert) in der Tabelle Kunden findet!!!

        Hoffe das hilft

        Gruß
        Thomas

        p.s.: Führ das mal aus, um es herauszufinden:

        select * from angebot where kd_id not in (select kd_id from kunden where kunden.kd_id is not null)

        Comment


        • #5
          Originally posted by Thomas Rith View Post
          Hallo balthazar,



          So wie es aussieht, hast Du ein oder mehrere Angebote in der Tabelle Angebote, die "keinen" passenden Kunden (Alte Kundennummer, die nicht mehr existiert) in der Tabelle Kunden findet!!!

          Hoffe das hilft

          Gruß
          Thomas

          p.s.: Führ das mal aus, um es herauszufinden:

          select * from angebot where kd_id not in (select kd_id from kunden where kunden.kd_id is not null)
          Erstmal danke für die Antworten.
          Thomas, deine Vermutung war genau richtig, hatte noch Dummydaten in der Angebotstabelle, wo die Kunden IDs nicht zu der Kundentabelle gepasst haben. Gar nicht mehr dran gedacht

          Dankeschön!

          Comment

          Working...
          X