none
eine Insert/Select Frage RRS feed

  • Frage

  • hallo :)

    ich möchte in die TabelleC bestimmte Einträge aus den TabellenA und B gleichzeitig "inserten".

    TabelleC hat nur 2 Spalten "Name, Vorname"

    Was ich mache:

     

    Insert TabelleC
    
    Select TabelleB.Name, TabelleB.Vorname
    
    where.....
    

    ich möchte aber noch zusätzlich, dass ich in die Spalten der TabelleC, die Werte der TabelleA reinbringen kann,

    Also die Befehle:

    Select TabelleB.Name, TabelleA.Vorname

    und

    Select TabelleA.Name, TabelleA.Vorname

    in einem Select-Befehl zusamenfassen und in die TabelleC inserten....

    Wenn man einfach "Insert Select TabelleB.Name, TabelleB.Vorname, TabelleA.Name, TabelleA.Vorname", dann müsste ich ja 4 Spalten in der TabelleC haben....

    hoffentlich ist das verständlich erklärt^^

    hat jemand ein Tipp für mich

    danke im Voraus

     

     



    • Bearbeitet BLRBeginner Montag, 12. Dezember 2011 21:44
    Montag, 12. Dezember 2011 21:43

Antworten

  • Hi,

    suchst Du evtl. UNION [ALL]?

    INSERT INTO TabelleC
    (
        Name,
        Vorname
    )
    SELECT Name, Vorname FROM TabelleA
    UNION ALL
    SELECT Name, Vorname FROM TabelleB
    
    


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 12. Dezember 2011 22:38
    Moderator
  • Hallo BLR Beginner

    Versuch mal sowas (Details siehe unten)

    INSERT INTO TabelleC(NachName, VorName)
    SELECT NachName, VorName FROM TabelleA
    UNION
    SELECT NachName, VorName FROM TabelleB

    Und wenn Du Doppelteinträge ebenfalls haben willst, dann verwende statt UNION einen UNION ALL

    Das SELECT Statement kannst Du vorgängig ohne Insert laufen lassen, um zu kontrollieren, ob es das gewünschte Resultset erzeugt.

    BTW:
    Name ist ein reserviertes Wort und sollte für Spaltennamen nicht verwendet werden. Verwende statt dessen besser Nachname, ist dann auch klar, was es ist.

    Gruss
    Henry
     BLRBeginner wrote:

    ich möchte in die TabelleC bestimmte Einträge aus den TabellenA und
    B*gleichzeitig* "inserten".
    TabelleC hat nur 2 Spalten "Name, Vorname" Was ich mache:

    Insert TabelleC
    Select TabelleB.Name, TabelleB.Vorname
    where.....

    ich möchte aber noch zusätzlich, dass ich in die Spalten der TabelleC,
    die Werte der TabelleA reinbringen kann,
    Also die Befehle:
    Select TabelleB.Name, TabelleA.Vorname

    TabelleB.Name und TAbelleA.Vorname? Mit welcher Logik? Welches wäre dann die Join Bedingung? Ich nehem mal an, das ist ein Schreibfehler, oder?

    und
    Select TabelleA.Name, TabelleA.Vorname
    in einem Select-Befehl zusamenfassen und in die TabelleC inserten....

    Wieso muss es ein Befehl sein?

    Wenn man einfach "Insert Select TabelleB.Name, TabelleB.Vorname,
    TabelleA.Name, TabelleA.Vorname", dann müsste ich ja 4 Spalten in der
    TabelleC haben....

    Das ist richtig ;-) Und Du kriegst ausser dem ein Kreuzprodukt, also jede Zeile der Tabelle A mit jeder Zeile der Tabelle B kombiniert, also Anzahl TabelleA Einträge * Anzahl TabelleB Einträge. Das willst Du nicht wirklich, oder? Falls nein, müsste dann hier ja eine Join Bedingung vorhanden sein.

    hoffentlich ist das verständlich erklärt

    nein, nicht so ganz ;-)

    Dienstag, 13. Dezember 2011 10:01

Alle Antworten

  • Hi,

    suchst Du evtl. UNION [ALL]?

    INSERT INTO TabelleC
    (
        Name,
        Vorname
    )
    SELECT Name, Vorname FROM TabelleA
    UNION ALL
    SELECT Name, Vorname FROM TabelleB
    
    


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 12. Dezember 2011 22:38
    Moderator
  • Hallo BLR Beginner

    Versuch mal sowas (Details siehe unten)

    INSERT INTO TabelleC(NachName, VorName)
    SELECT NachName, VorName FROM TabelleA
    UNION
    SELECT NachName, VorName FROM TabelleB

    Und wenn Du Doppelteinträge ebenfalls haben willst, dann verwende statt UNION einen UNION ALL

    Das SELECT Statement kannst Du vorgängig ohne Insert laufen lassen, um zu kontrollieren, ob es das gewünschte Resultset erzeugt.

    BTW:
    Name ist ein reserviertes Wort und sollte für Spaltennamen nicht verwendet werden. Verwende statt dessen besser Nachname, ist dann auch klar, was es ist.

    Gruss
    Henry
     BLRBeginner wrote:

    ich möchte in die TabelleC bestimmte Einträge aus den TabellenA und
    B*gleichzeitig* "inserten".
    TabelleC hat nur 2 Spalten "Name, Vorname" Was ich mache:

    Insert TabelleC
    Select TabelleB.Name, TabelleB.Vorname
    where.....

    ich möchte aber noch zusätzlich, dass ich in die Spalten der TabelleC,
    die Werte der TabelleA reinbringen kann,
    Also die Befehle:
    Select TabelleB.Name, TabelleA.Vorname

    TabelleB.Name und TAbelleA.Vorname? Mit welcher Logik? Welches wäre dann die Join Bedingung? Ich nehem mal an, das ist ein Schreibfehler, oder?

    und
    Select TabelleA.Name, TabelleA.Vorname
    in einem Select-Befehl zusamenfassen und in die TabelleC inserten....

    Wieso muss es ein Befehl sein?

    Wenn man einfach "Insert Select TabelleB.Name, TabelleB.Vorname,
    TabelleA.Name, TabelleA.Vorname", dann müsste ich ja 4 Spalten in der
    TabelleC haben....

    Das ist richtig ;-) Und Du kriegst ausser dem ein Kreuzprodukt, also jede Zeile der Tabelle A mit jeder Zeile der Tabelle B kombiniert, also Anzahl TabelleA Einträge * Anzahl TabelleB Einträge. Das willst Du nicht wirklich, oder? Falls nein, müsste dann hier ja eine Join Bedingung vorhanden sein.

    hoffentlich ist das verständlich erklärt

    nein, nicht so ganz ;-)

    Dienstag, 13. Dezember 2011 10:01
  • danke für die antworten :)

    werde das bald ausprobieren.

    das mit Vorname, Name ist nur ein Beispiel. Ich sammele einfach information in eine Tabelle aus zwei anderen Tabellen und wollte halt nicht mehrere Insert´s machen...

    Dienstag, 13. Dezember 2011 18:30
  • Hallo BLRBeginner,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 23. Dezember 2011 12:54
    Moderator