Benutzer mit den meisten Antworten
eine Insert/Select Frage

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
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- Als Antwort vorgeschlagen KostjaMVP Freitag, 16. Dezember 2011 16:45
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. Dezember 2011 12:54
-
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.VornameTabelleB.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 ;-)
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. Dezember 2011 12:54
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- Als Antwort vorgeschlagen KostjaMVP Freitag, 16. Dezember 2011 16:45
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. Dezember 2011 12:54
-
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.VornameTabelleB.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 ;-)
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. Dezember 2011 12:54
-
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,
RobertRobert Breitenhofer, MICROSOFT
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.