Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Grundkurs 2: Aufgaben und Lösungen

Beispiel 4: Einfügen mit SELECT

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Weisen Sie Kunden, welchen bereits das Interesse Werk- und Baustoffe (BAU) oder Heimwerken (HWE) zugeordnet ist, das neue Interesse Radfahren (RAD) zu. Lesen Sie dazu die Kundennummern aus der Tabelle aus und fügen Sie sie mit dem neuen Interesse ein.

Transkript

In diesem Beispiel weisen wir allen Kunden die bereits das Interesse "Werk- und Baustoffe" oder "Heimwerken" aufweisen, das neu erfasste Interesse "Radfahren" zu. Dazu müssen wir die entsprechenden Kundennummern aus der Tabelle "kundeninteressen" auslesen, und auch gleichzeitig wieder einfügen. Diese Anweisung hier liefert uns einen Überblick über die bereits vorhandenen Interessenszuordnungen, d. h. es gib hier einige für das Interesse "BAU", Bau, Werk- und Baustoffe, und weiter unten in der Liste, finden wir auch ein paar Einträge zu "Heimwerk". Allerdings muss bei diesem Bespiel noch etwas berücksichtigt werden. Es ist möglich, dass einem Kunden bereits beide dieser Interessen zugeordnet sind. Das würde bedeuten, beim Auslesen muss man darauf achten, das diesem Kunden nicht versucht wird, das neue Interesse "Radfahren" doppelt zuzuweisen, denn das würde zu einem Fehler führen. Auf das müssen Sie besonders Rücksicht nehmen, wenn Sie das Beispiel nun selbstständig ausführen. Viel Erfolg dabei! Pausieren Sie nun das Video und lösen Sie die Aufgabe. Wenn Sie damit fertig sind, fahren Sie mit dem Video fort und sehen Sie sich die Musterlösung an. Ich bin mir sicher, Sie haben das Beispiel korrekt gelöst. Betrachten wir uns nun das mögliche Ergebnis. Dazu müssen wir in die Tabelle "kundeninteressen", in die Spalten "intcode" und "kundennummer", die Werte einfügen, die wir zuerst mit diesem SELECT auslesen. Ich führe diese Anweisung jetzt einmal separat aus, dieses SELECT, damit sehen wir was wir einfügen würden. Das Interesse Radfahren "RAD" schreibe ich hier fix in das SELECT hinein die Kundennummer wird aus der Tabelle "kundeninteressen" ausgelesen, und gefiltert auf die beiden Interessen "BAU" und "HWE". Wie das Ergebnis hier unten zeigt, kommt allerdings die Kundennummer "121" hier doppelt vor. Fügen wir also diese Werte ein, indem wir diese Anweisung ausführen, laufen wir auf eine Fehlermeldung auf. Wir müssen also verhindern, dass doppelt eingefügt wird. Und das können wir auf unterschiedliche Weise tun. Bevor ich das tue, starte ich wie gewohnt eine Transaktion und kopiere mir diese Anweisung hier einmal her. Eine Möglichkeit, um zu verhindern, dass es zu einem doppelten Einfügen kommt, ist, dass ich hier in meiner SELECT das Schlüsselwort DISTINCT ergänze. Natürlich muss ich auch an der richtigen Stelle diese Einfügung vornehmen, und da habe ich jetzt nicht gut genug aufgepasst. Hier sehen wir das jetzt. Mit einem SELECT DISTINCT werden Duplikate unterdrückt und jetzt wird die Nummer "121" nurmehr einmalig ausgegeben. Und wenn ich jetzt hier diesen Wert einfüge, indem ich die Anweisung ausführe, bekomme ich keine Fehlermeldung mehr. Wir bekommen das Ergebnis "6 Zeilen sind eingefügt worden". Ich kontrolliere das Ergebnis hier mit dieser Anweisung, um mir auszugeben, wer jetzt dieses neue Interesse aufweist. Und ich bekomme genau diese sechs Namen hier ausgelesen. Vorläufig, mache ich das allerdings noch einmal rückgängig, um Ihnen auch die zweite Variante zu zeigen. Duplikate unterdrücken können wir ja nicht nur mit dem Schlüsselwort DISTINCT, sondern z. B. auch durch das Einsetzen einer Gruppierung. Das heißt anstelle hier DISTINCT zu verwenden, ergänze ich hier eine GROUP BY-Klausel. GROUP BY und gruppiere nach der Kundennummer. Ich betrachte mir das Ergebnis vor dem Einfügen noch einmal separat, indem ich es allein markiere, und hier sehen wir nun das Ergebnis, das eingefügt werden wird. Auch hier kommt jetzt die Kundennummer "121" nunmehr einmalig vor, da ich nach der Kundennummer gruppiert habe. Und ebenso führe ich diese Anweisung aus, nachdem ich vielleicht vorher noch einmal die Transaktion neu starte, die ich zurückgerollt habe, füge ich wieder diese Datensätze ein, um wie gewohnt mit einem COMMIT abzuschließen. Und wir kontrollieren das Ergebnis und wir sehen, dass wir sechs Zeilen eingefügt haben. Das sind nun die Kunden, die das neue Interesse "Radfahren" zugewiesen bekommen haben. Wir haben also gesehen, wir können auch mit einem SELECT direkt ein INSERT vornehmen. Das was ausgelesen wird, das Ergebnis wird eingefügt. Unter Umständen muss man darauf achten, dass wir keine Duplikate generieren fürs Einfügen. Das würde zu einer Primärschlüssel-Verletzung führen. Wahlweise kann man solche Duplikate entweder mit einer Gruppierung oder mit einem DISTINCT unterdrücken.

SQL Grundkurs 2: Aufgaben und Lösungen

Vertiefen Sie Ihre SQL-Kenntnisse. In diesem Workshop erhalten Sie zahlreiche Beispielaufgaben, die Sie selbst lösen können. Anschließend zeigt Ihnen der Trainer die Lösung.

7 Std. 41 min (61 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieses Training setzt SQL-Kenntnisse voraus, wie sie beispielsweise in „SQL lernen und anwenden“ vermittelt werden.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!