Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 8 Datenbank-Anwendungen mit ADO.NET
Pfeil 8.1 Was sind relationale Datenbanken?
Pfeil 8.1.1 Beispiel »Lager«
Pfeil 8.1.2 Indizes
Pfeil 8.1.3 Relationen
Pfeil 8.1.4 Übungen
Pfeil 8.2 Anlegen einer Datenbank in Microsoft Access
Pfeil 8.2.1 Aufbau von Access
Pfeil 8.2.2 Datenbank-Entwurf in Access 2010
Pfeil 8.2.3 Übungen
Pfeil 8.3 Datenbankzugriff mit Visual Basic
Pfeil 8.3.1 Beispiel-Datenbank
Pfeil 8.3.2 Ablauf eines Zugriffs
Pfeil 8.3.3 Verbindung
Pfeil 8.3.4 SQL-Befehl
Pfeil 8.3.5 OleDb
Pfeil 8.3.6 Auswahlabfrage
Pfeil 8.3.7 Aktionsabfrage
Pfeil 8.4 SQL-Befehle
Pfeil 8.4.1 Auswahl mit select
Pfeil 8.4.2 Ändern mit update
Pfeil 8.4.3 Löschen mit delete
Pfeil 8.4.4 Einfügen mit insert
Pfeil 8.4.5 Typische Fehler in SQL
Pfeil 8.5 Ein Verwaltungsprogramm
Pfeil 8.5.1 Initialisierung
Pfeil 8.5.2 Alle Datensätze sehen
Pfeil 8.5.3 Datensatz einfügen
Pfeil 8.5.4 Datensatz ändern
Pfeil 8.5.5 Datensatz löschen
Pfeil 8.5.6 Datensatz suchen
Pfeil 8.6 Abfragen über mehrere Tabellen
Pfeil 8.7 Verbindung zu MySQL
Pfeil 8.7.1 .NET-Treiber
Pfeil 8.8 Arbeiten mit DataSets
Pfeil 8.8.1 Eine Tabelle in Detailansicht
Pfeil 8.8.2 Schließen ohne Speichern verhindern
Pfeil 8.8.3 Eine Tabelle in DataGrid-Ansicht
Pfeil 8.8.4 Mehrere Tabellen mit Relationen

Rheinwerk Computing - Zum Seitenanfang

8.6 Abfragen über mehrere Tabellen

Es folgt ein Beispiel mit einer Datenbank, die mehrere Tabellen beinhaltet (Projekt DBMehrereTabellen). Es werden einige Besonderheiten erläutert, die sich bei Abfragen über mehrere Tabellen ergeben. Das Beispiel basiert auf der Übung Projektverwaltung, siehe Abschnitt 8.1.4, bzw. der zugehörigen Lösung. Das Datenbankmodell sehen Sie in Abbildung 8.34.

Zur Erläuterung des Datenbankmodells:

  • Kunden werden mit Name und Ort angegeben, Primärschlüssel: Kunden-ID.
  • Projekte werden mit Bezeichnung angegeben. Jedes Projekt ist einem Kunden zugeordnet. Primärschlüssel ist die Projekt-ID.

Abbildung

Abbildung 8.34 Datenbankmodell zu »Projektverwaltung«

  • Personen werden mit Nach- und Vorname angegeben. Primärschlüssel ist die Personen-ID.
  • Die Arbeitszeiten der Personen an den Projekten werden mit Datum und Zeit in Stunden angegeben. Primärschlüssel ist die Kombination aus Projekt-ID, Personen-ID und Datum.

Zum besseren Verständnis der Abfrage-Ergebnisse folgen die Inhalte der Tabellen in den Abbildungen 8.35 bis 8.38.

Abbildung

Abbildung 8.35 Inhalt der Tabelle »kunde«

Abbildung

Abbildung 8.36 Inhalt der Tabelle »projekt«

Abbildung

Abbildung 8.37 Inhalt der Tabelle »person«

Abbildung

Abbildung 8.38 Inhalt der Tabelle »projekt_person«

Zunächst die Abfrage Alle Personen – das Ergebnis sehen Sie in Abbildung 8.39.

  • Es wird für jede Person ein Datensatz ausgegeben.
  • Personen werden mit Nachname und Vorname, auch danach sortiert, ausgegeben.
select * from person order by pe_nachname, pe_vorname

Abbildung

Abbildung 8.39 Alle Personen

Abfrage Anzahl der Kunden, Ergebnis siehe Abbildung 8.40.

  • Es wird die Anzahl der Kunden mit Hilfe der SQL-Funktion count() ermittelt.
  • Das Ergebnisfeld, das die berechnete Anzahl beinhaltet, bekommt den (frei gewählten) Namen count_ku_id.
select count(ku_id) as count_ku_id from kunde

Abbildung

Abbildung 8.40 Anzahl der Kunden

Abfrage Alle Kunden mit allen Projekten, Ergebnis siehe Abbildung 8.41.

  • Es wird für jedes Projekt ein Datensatz ausgegeben.
  • In jedem Datensatz stehen die Daten des Projekts und des betreffenden Kunden.
  • Die Anzeige ist nach Name, Ort und Bezeichnung sortiert.
select * from kunde, projekt
where ku_id = pr_ku_id
order by ku_name, ku_ort, pr_bezeichnung
  • In jedem Datensatz werden Inhalte aus zwei Tabellen angezeigt. Beide Tabellennamen werden hinter from aufgeführt.
  • Es werden nur Datensätze zusammengestellt, bei denen die Feldinhalte aus der Bedingung nach where übereinstimmen.

Abbildung

Abbildung 8.41 Alle Kunden mit allen Projekten

Abfrage Alle Personen mit allen Projektzeiten, Ergebnis siehe Abbildung 8.42.

  • Es wird für jede eingetragene Arbeitszeit ein Datensatz ausgegeben.
  • In jedem Datensatz stehen die Daten der Arbeitszeit, des betreffenden Projekts und des betreffenden Kunden.
  • Die Ausgabe ist nach Nachname, Bezeichnung und Datum sortiert.
select * from projekt, projekt_person, person
where projekt.pr_id = projekt_person.pr_id
and projekt_person.pe_id = person.pe_id
order by pe_nachname, pr_bezeichnung, pp_datum
  • In jedem Datensatz werden Inhalte aus drei Tabellen angezeigt. Alle drei Tabellennamen werden hinter from aufgeführt.
  • Es werden nur Datensätze zusammengestellt, bei denen die Feldinhalte aus den beiden Bedingungen nach where übereinstimmen.
  • Die beiden Feldnamen pr_id und pe_id kommen jeweils in zwei Tabellen vor. Daher müssen Sie jeweils den Tabellennamen (mit nachfolgendem Punkt) zusätzlich angeben. Ansonsten wären die Feldnamen in der SQL-Anweisung nicht eindeutig.

Abbildung

Abbildung 8.42 Alle Personen mit allen Projektzeiten

Abfrage Alle Personen mit Zeitsumme, Ergebnis siehe Abbildung 8.43.

  • Es wird für jede Person ein Datensatz ausgegeben.
  • Es werden alle Personen, denen mindestens eine Arbeitszeit zugeordnet ist, ausgegeben.
  • Es wird die Summe der Arbeitszeiten pro Person mithilfe der SQL-Funktion sum() berechnet.
  • Die Ausgabe ist nach Nachname sortiert.
select pe_nachname, sum(pp_zeit) as sum_pp_zeit
from person, projekt_person
where person.pe_id = projekt_person.pe_id
group by person.pe_id, pe_nachname
order by pe_nachname
  • Der Anweisungsteil sum ... as bewirkt, dass die SQL-Funktion sum() angewendet wird.
  • Es werden alle Einträge im Feld pp_zeit aufsummiert, nach denen gruppiert wurde. Die Gruppierung wird mithilfe von group by durchgeführt.
  • Es wird nach den Feldern pe_id und pe_nachname der Tabelle person gruppiert, es werden also alle Arbeitszeiten einer Person summiert. Streng genommen hätte es gereicht, nach pe_id zu gruppieren, da dadurch bereits alle Personen voneinander unterschieden werden. Allerdings soll das Feld pe_nachname ausgegeben werden, daher muss es ebenfalls Teil der Gruppierungsfunktion sein.
  • Das Ergebnisfeld, das die berechnete Summe beinhaltet, bekommt den (frei gewählten) Namen sum_pp_zeit. Sie sollten die Ausgabe mithilfe von String.Format() runden, zum Beispiel auf eine Nachkommastelle.

Abbildung

Abbildung 8.43 Alle Personen mit Zeitsumme

Abfrage Alle Projekte mit allen Personenzeiten, Ergebnis siehe Abbildung 8.44.

  • Es handelt sich um den gleichen Zusammenhang wie in der Abfrage Alle Personen mit allen Projektzeiten.
  • Die Ausgabe ist nur anders sortiert, nach Bezeichnung, Nachname und Datum.
select * from projekt, projekt_person, person
where projekt.pr_id = projekt_person.pr_id
and projekt_person.pe_id = person.pe_id
order by pr_bezeichnung, pe_nachname, pp_datum

Abbildung

Abbildung 8.44 Alle Projekte mit allen Personenzeiten

Abfrage Alle Projekte mit Zeitsumme, Ergebnis siehe Abbildung 8.45.

  • Es handelt sich um einen ähnlichen Zusammenhang wie in der Abfrage Alle Personen mit Zeitsumme. Auch diese Ausgabe sollte gerundet werden.
  • Es wird nach Projekt statt nach Person gruppiert und entsprechend sortiert.
select pr_bezeichnung, sum(pp_zeit) as sum_pp_zeit
from projekt, projekt_person
where projekt.pr_id = projekt_person.pr_id
group by projekt.pr_id, pr_bezeichnung
order by pr_bezeichnung

Abbildung

Abbildung 8.45 Alle Projekte mit Zeitsumme



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern