Announcement

Collapse
No announcement yet.

INSERT mit SELECT

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

  • INSERT mit SELECT

    Hallo, ich benutze MSSQL 2005 und möchte eine INSERT Anweisung + SELECT schrHallo, ich benutze MSSQL 2005 und möchte eine INSERT Anweisung + SELECT schreiben die auf schon vorhandene Datensätze in der DB prüft. Ist das überhaupt möglich?

    So siehts jetzt erstmal aus!
    PHP Code:
    INSERT INTO Person (firstName,lastName,address1,city,postcode,region,sortNumber,company_id,salutation_id
    SELECT 'Test','Test','-','Test','-','DE',4734,2,4 UNION 
    SELECT 
    'Test1,Test1','Test1','Test1','Test1','41460','GERMANY',4735,2,
    MfG Ronnsen

  • #2
    Hallo joschika77,

    das sollte mit so einem Konstrukt gehen:
    INSERT [blub_A]
    (
    A_feld, B_feld
    )
    SELECT
    a_feld, b_feld
    FROM [blub_B]
    AND NOT EXISTS
    (SELECT *
    FROM [blub_C]
    WHERE a_feld = ...

    Comment


    • #3
      Hmmm...das funzt nicht.Beispiel jetzt mit einem Datensatz.
      Das sieht komisch aus
      PHP Code:
      FROM Person AND NOT EXISTS 
      So siehts aus:
      PHP Code:
      INSERT INTO Person (firstName,lastName,address1,city,postcode,region,sortNumber,company_id,salutation_id
      SELECT 'Test','Test','-','Test','-','DE',4734,2,4 FROM Person AND NOT EXISTS  (SELECT *
      FROM Person WHERE lastName 'Test' AND company_id 2

      Comment


      • #4
        Ohh, sorry, ich habs kopiert aus einem langen SQL und zu viel bzw falsches weggenommen.
        INSERT INTO Person
        (firstName,lastName,address,city,postcode,region,s ortNumber,company_id,salutation_id)
        SELECT 'Test','Test','-','Test','-','DE',4734,2,4 FROM Person
        WHERE NOT EXISTS
        (SELECT * FROM Person WHERE lastName = 'Test' AND company_id = 2)

        Comment


        • #5
          Ok danke...er erkannt zwar wenn es schon einen gibt und trägt ihn nicht ein, aber wenn es den noch nicht gibt trägt er ganz viele ein....uahhhh

          MfG Ronnsen

          Comment


          • #6
            Hallo Ronnsen,

            um das zu lösen, müssen erst mal die PK Felder bekannt sein.
            Aus einem vorherigen Statement schieße ich mal auf lastname und company_id.

            Dann sieht das Statement so aus, wenn die Daten aus einer anderen Tabelle kommt!!!:

            [highlight=SQL]INSERT INTO Person
            (firstName, lastName, address, city, postcode, region, sortNumber, company_id, salutation_id)
            SELECT firstName, lastName, address, city, postcode, region, sortNumber, company_id, salutation_id
            FROM OtherPersonTbale
            WHERE NOT EXISTS
            (SELECT 1
            FROM Person AS SUB
            WHERE Person.lastName = SUB.lastname
            AND Person.company_id = SUB.company_id)[/highlight]

            Wenn der PK noch weitere Felder hat, diese einfach im SUB-Select ergänzen.

            Wenn Du keine andere Tabelle hast, sonder Konstanten, dann geht es so:

            [highlight=SQL]IF NOT EXISTS (SELECT 1 FROM Person WHERE lastname = 'Test' AND company_id = 2)
            INSERT INTO Person
            (firstName,lastName,address,city,postcode,region,s ortNumber,company_id,salutation_id)
            VALUES ('Test','Test','-','Test','-','DE',4734,2,4)
            [/highlight]
            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


            • #7
              Ok Danke Leuts!Habs hinbekommen.So siehts dann mit mehreren so aus.

              PHP Code:
              INSERT INTO Person(lastNamefirstName,company_id)
              SELECT 'Testa''Testa'2 WHERE NOT EXISTS (SELECT lastNamefirstName FROM Person WHERE lastName 'Testa' AND company_id 2UNION
              SELECT 
              'Testb''Testb'2 WHERE NOT EXISTS (SELECT lastNamefirstName FROM Person WHERE lastName 'Testb' AND company_id 2
              MfG Ronnsen

              Comment

              Working...
              X