Announcement

Collapse
No announcement yet.

import zwischen 2 tabellen

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

  • import zwischen 2 tabellen

    zu allererst: ich habs echt versucht mit dem import-/export-assistenten, habs einfach nicht hinbekommen. daher sorry für die frage die für viele von euch wohl einfach vorkommen wird

    ich habe in meiner datenbank eine tabelle namens adressen und möchte eigentlich diese adressen importieren in die tabelle "projekte".
    Adressen.name
    Adressen.vorname
    Adressen.nr

    projekte.nr => adressen.nr
    projekte.adresse => adressen.nr
    projekte.bezeichnung => adressen.name + adressen.vorname

    kann ich das irgendwie mit einem simplen insert befehl hinbekommen? vor allem da dieser vorgang bei ca 10 datenbanken gemacht werden müsste

    danke im voraus..falls es überhaupt jemand für nötig hält zu antworten

  • #2
    Sollte so funktionieren:
    Code:
    Insert into Projekte(nr, adresse, bezeichnung)
      select nr, nr, name + ' ' + vorname from adressen
    Aufpassen wegen ev. erforderlicher Umwandlung von int auf character und Berücksichtigung von NULL - könnte daher auch so aussehen:
    Code:
    Insert into Projekte(nr, adresse, bezeichnung)
      select nr, cast(nr as varchar), IsNull(name + ' ', '') + IsNull(vorname,'') from adressen
    bye,
    Helmut

    Comment


    • #3
      sorry für die verspätete antwort
      ich habe es dann selber rumgetestet und doch noch herausgefunden. das nächste mal warte ich ein paar tage bevor ich die frage poste! danke trotzdem für die antwort )

      grüsse

      Comment


      • #4
        hi its me again..

        ich habe bemerkt dass da noch eine andere tabelle dazwischen funkt. undzwar gibt es eine tabelle namens Laufnummer, in der jeweils die aktuellste Laufnummer der projekte drin stehen. das habe ich versucht in mein statement einzubauen aber irgendwie klappt das nicht so:

        set @laufnr = (select LaufNr + 1 from LaufNummern where Tabelle='PROJEKTE')
        insert into PROJEKTE (LaufNr, ProjektNr, Bezeichnung, Kunde)
        select @laufnr, AdressNrADR, Name + ' ' + Vorname, AdressNrADR from ADR_Adressen
        update LaufNummern set LaufNr = @laufnr where Tabelle='PROJEKTE'

        Comment


        • #5
          Sorry, ich weiß nicht wie es anderen damit geht, aber
          ... irgendwie klappt das nicht so
          ist eine Problembeschreibung, mit der ich nichts anfangen kann.

          bye,
          Helmut

          Comment


          • #6
            ok sorry. hier also mein statement:
            declare @laufnr as int
            set @laufnr = (select LaufNr + 1 from LaufNummern where Tabelle='PROJEKTE')
            insert into PROJEKTE (LaufNr, ProjektNr, Bezeichnung, Kunde)
            select @laufnr, AdressNrADR, Name + ' ' + Vorname, AdressNrADR from ADR_Adressen
            update LaufNummern set LaufNr = @laufnr where Tabelle='PROJEKTE'

            es soll also jedesmal ein neues projekt einfügen, die aktuelle laufnummer von der tabelle LaufNummern holen und nach dem einfügen die laufnummer um 1 erhöhen. genau das ist der teil der nicht klappt. hier die fehlermeldung:


            Meldung 2601, Ebene 14, Status 1, Zeile 3
            Eine Zeile mit doppeltem Schlüssel kann in das 'PROJEKTE'-Objekt mit dem eindeutigen 'LaufNr'-Index nicht eingefügt werden.
            Die Anweisung wurde beendet.

            Comment


            • #7
              Naja, sagt ja ganz klar aus, dass in der Tabelle bereits ein Datensatz mit dieser LaufNr vorhanden ist. Welche LaufNr das ist und wie die reingekommen ist, darfst du uns nicht fragen.
              Aber mache einfach mal
              Code:
              select LaufNr + 1 from LaufNummern where Tabelle='PROJEKTE'
              und sage uns was da rauskommt und dann bitte noch ein
              Code:
              select * from Projekte where LaufNr = XXX
              ... statt dem XXX aber die zuvor angezeigt bekommene LaufNr eingeben.

              bye,
              Helmut

              Comment


              • #8
                tag

                die laufnummer ist 6958. ist an sich ja ok, ich kriegs einfach in meinem statement nicht hin, dass er nach dem insert eine neue zahl in die tabelle laufnummern setzt und den neuen insert mit der neuern laufnummer macht

                Comment


                • #9
                  Wie es aussieht, hast du in der Tabelle 'Projekte' bereits einen Datensatz, der dem Wert 'Laufnummer + 1' aus Tabelle Laufnummern entspricht. Solange du diese Dateninkosistenz nicht behebst, kannst du programmieren was du willst, es wird nicht funktionieren!

                  bye,
                  Helmut

                  Comment


                  • #10
                    komisch, habe jetzt mal alle datensätze in 'Projekte' gelöscht und es geht trotzdem nicht..hmm..janu, danke trotzdem.

                    update: konnte es nun doch lösen undzwar mit einem while/fetch.

                    danke und grüsse
                    Zuletzt editiert von peterpan370; 30.08.2010, 10:44.

                    Comment

                    Working...
                    X