Abfragen unter ACCESS history menue Letztmalig dran rumgefummelt: 02.03.11 08:23:22

Auch unter Verwendung des hier nun aufgeführten DBMS verwenden wir die allgemein gültigen Grundlagen, welche von Microsoft aus was auch immer für welchen Gründen (es ist nix weiter, als der Versuch der  Anpassung an den unbedarften Anwender!), umformuliert und "aufgeweicht" wurden. Das erleichtert das Arbeiten für den Laien und schafft hervorragende Fehlermöglichkeiten für den Profi - weshalb gilt: Nimm' Access nicht zur scharfen Datenverwaltung und -abfrage!
Ideal in der Abfrage-Programmierung unter Access ist die Kombination Entwurfsansicht - SQL-Ansicht. Einzelne tiefergehende Abfragen lassen sich eh' nur noch mit dem SQL-Editor erledigen. Zu beachten ist allerdings ebenso, dass in der Gestaltung der Abfragen unter den einzelnen Versionen von Access erhebliche Unterschiede bestehen - es wurde zunehmend an Standard-SQL angelehnt.

... wenn wir allerdings wissend handeln, saubere Entitytypen sowie Relationships gesetzt haben, steht einer professionellen SQL nichts weiter im Weg. als die Besonderheiten, welche in der Abfragestruktur einbezogen wurden und unser eigenes logische Denken - eine Datenbank hat gegen uns keine andere Chance, als die ihr inne wohnnende Logik ;-)
Kriminalisten arbeiten mit dem Modell der schrittweisen Verschärfung von Suchkriterien und dem "Übereinanderlegen" von scheinbar nicht zusammengehörigen Informationen - deshalb freuen sie sich über möglichst viele Informationen im Zusammenhang,
  • Datensätze, die gewissen Kriterien entsprechen, können selektiert (ausgewählt) werden, dabei können auch noch die Felder angegeben werden, die zur Ausgabe gelangen sollen
  • hauptsächlich erfolgt die Ergebnisrepräsentation durch einen View, dieser kann jedoch in Form eines Berichts auch auf den Drucker oder in eine Datei mit gewünschtem Format umgeleitet werden
  • Abfragen repräsentieren immer ein Gesamtergebnis, d. h. alle Datensätze (mit den entsprechend gewählten Feldnamen), die die Abfragebedingungen erfüllen, werden auf einmal angezeigt und evtl. in einer Datei abgespeichert (Abfragen sind SQL-kompatibel) - eine Abfrage auf eine Abfrage ist möglich (Queries können auch genestet werden - Subqueries)
  • wird eine Abfrage über mehrere Tabellen geführt, so wird die entsprechende Referenz temporär über die Schlüssel ermittelt - man spricht vom JOIN
  • dazu ist kein relationales Gefüge notwendig - es darf aber vorhanden sein
  • einzige Rahmenbedingung: in jeder Tabelle ist mindestens eine eindeutige Entität zur anderen enthalten
  • die Ausgabe der Ergebnisse kann wahlweise in einer Tabelle (View) mit einer anzugebenden Menge von Feldnamen vorgenommen, oder als Datei hinterlegt werden
  • dabei können, im Gegensatz zur "Gehe zu ..."-Positionierung, bzw. zur Suchfunktion, auch Verknüpfungen der Abfragebedingungen erfolgen - es kann gleichzeitig nach mehreren Kriterien gefragt werden - unter relationalen Datenbanken wie FoxPro eben auch über mehrere Relationen (Tabellen) hinweg!!!
  • Suchkriterien können mathematische und logische Operationen enthalten, müssen jedoch eindeutig spezifiziert sein
  • der Aufbau der SQLs, oder hier Abfragen genannt mit der Möglichkeit der Entwicklung über Komponenten, erfolgt durch Klauseln - einige notwendig - andere optional.

SELECT [DISTINCT] {*|Attributliste|mathematische Ausdrücke} Bezeichner
FROM Tabelle1 Bezeichner1, Tabelle2 Bezeichner2, ...
[WHERE Bedingungen]
[GROUP BY Attributliste] [HAVING Bedingungen]
[ORDER BY Attributliste] [ASC|DESC];

Was ich bei ACCESS beachten muss:
  • als logische Operatoren gelten die SQL-Standards sowie auch deren Vorrangautomatik
  • JOKER ist das "*" und für das WILDCARD steht das "?" - ACCESS kennt Gruppenjoker mit [..] und den negierenden Gruppenjoker mit ! - das entspricht jedoch nicht der Standard-SQL
  • Datumsangaben sind in "#" einzuschließen - Ausnahmen bilden der Einsatz von Joker und/oder Wildcard
  • als Wahrheitswerte stehen WAHR und FALSCH zur Verfügung (True und False werden aber ebenso akzeptiert)
  • NULLWERTE werden durch den Parameter IST NULL erkannt
  • LIKE muss als Prädikat nicht mit geführt werden, wird jedoch automatisch generiert
  • BETWEEN wird durch Zwischen ersetzt
  • den Gruppenjoker siehe hier oder den Auslassungsoperator hab' ich bis jetzt nur bei ACCESS so angetroffen
  • genau gleich ist ACCESS unbekannt
  0. Das Beispiel ERM - Datenbasis und Dokumentation
  1. Allgemeine Projektion
  2. Ausdrücke in Abfragen
  3. Search-Conditions in der Abfrage
  4. Komplexe Searchconditions - also mehrfache und logisch kombinierte Suchbedingungen
  5. Indirekte Abfragen auf logischen Bedingungen
  6. Das Mengenprädikat (IN-Operator) oder der Aufzählungsoperator
  7. Das BETWEEN-Prädikat
  8. JOINS in Abfragen
  9. Berechnete Abfragen
10. Datengruppierungen und -sortierung
11. Aggregierende Funktionen
12. HAVING-Klausel
13. Quantifizierende Prädikate
14. Subqueries
15. Bedingungen in der Abfrage
16. Aktionsabfragen
17. Parameterabfragen

0. Die eingesetzte Datenbasis - ERM, Daten, Schlüssel, Indizies und Abfragen history menue scroll up

Die derzeit verwendete Studenten-Datenbasis ist noch im Aufbau begriffen. Daraus resultiert, dass einige Abfragen in der Zieldatensatzanzahl differieren. Der größte Teil von kleinen Fehlern sollte aber zwischenzeitlich behoben worden sein und damit die Aufgeben nachvollziehbar. 

mehrere Datentabelle werden für den Zeitpunkt der Abfrage in einen JOIN zusammengefasst - gesetzte korrekte Relationen werden automatisch erkannt und vermittelt
evtl. vorhandene Zwischenrelationen (z. B. aus m : n-Relationen) müssen gesondert mit in die Projektion gezogen werden, selbst, wenn sie nicht unmittelbar für den VIEW Bedeutung haben

VIEW und Projektion bilden unter Verzicht auf Searchconditions ein Gleichnis

 die Datenbasis STUDENT.MDB

Relationship der Studenten-Datenbasis

 

Relationship der Studenten-Datenbasis

Download der Datenbasis STUDENT.MDB im ZIP-Format

Relationship der Studenten-Datenbasis zum Download als CDR-Datei

 
 

STUDENT (IDENT, IMMA_NR, ERFASST, ANREDE, TITEL, VORNAME, ZUSATZ, NAME, ORT, PLZ, STRASSE, TEL_NR, JOB, FAHRELAUB, K_GELD, FAHRZEUG, MAIL, WWW, NEBENWOHN, BEMERKUNG)

Entitytyp STUDENT

STUDAT (IMMA_NR, EINKOMM, VORBESTRA, MIETE, ASSISTENT, F_STAND, GROESSE_CM, GEWICHT_KG)

Entitytyp STUDAT

GEHTNACH (HOBBY_NR, IMMA_NR)

Entitytyp STUDAT

HOBBY (HOBBY_NR, BEZEICHNUNG)

Entitytyp HOBBY

BELEGT (IMMA_NR,, PRAKT_NR, BESTANDEN)

Entitytyp BELEGT

PRAKTIKUM (PRAKT_NR, VON, BIS, PLZ, ORT, TEL, INHALT)

Entitytyp PRAKTIKUM

NOTEN (IDENT, IMMA_NR, DATABASE, LATEIN, RECHT, MATHE, ENGLISH)

Entitytyp NOTEN aus dem 1 : 1 Relationship STUDENT - HAT - NOTEN

VORLESUNG (VL_NR, BEGINN, ENDE, WO_TAG, HAUS, RAUM, FACH, PRAKTIKUM, SEMINAR, SCRIPT)

Entitytyp VORLESUNG aus dem m : n Relationship STUDENT - BESUCHT - VORLESUNG

MACHT (PRAKT_NR, IMMA_NR, BESTANDEN)

Entitytyp MACHT aus dem n : m Relationship STUDENT - MACHT - PRAKTIKUM

PROFESSOR (IDENT, PERS_NR, CHEF, ANREDE, TITEL, VORNAME, ZUSATZ, NAME, HAUS; RAUM, LEHRSTUHL, GEHALT, LEHRSTUHL, ORT, PLZ, STRASSE, TEL_NR, FAHRZEUG, MAIL, WWW, BEMERKUNG)

Entitytyp PROFESSOR

BETREUT (PRAKT_NR, PERS_NR)

Entitytyp BETREUT aus dem n : m Relationship PROF - BETREUT - PRAKTIKUM


1. Projektion und Selektion bezüglich einer Tabelle - das ist noch nicht der VIEW history menue scroll up

Die Projektion entscheidet lediglich darüber, welche der zur Auswahl stehenden Merkmale (man nennt sie auch Datenfelder oder Feldnamen) in die Auswertung einbezogen werden. Streng genommen bezeichnet man die Sicht auf die Menge aller Daten als einen VIEW - ACCESS tut dies sehr inkonsequent und vergibt den logischen Schalter "Anzeige" für die Entscheidung zum VIEW.

mehrere Datentabelle werden für den Zeitpunkt der Abfrage in einen JOIN zusammengefasst - gesetzte korrekte Relationen werden automatisch erkannt und vermittelt
evtl. vorhandene Zwischenrelationen (z. B. aus m : n-Relationen) müssen gesondert mit in die Projektion gezogen werden, selbst, wenn sie nicht unmittelbar für den VIEW Bedeutung haben

VIEW und Projektion bilden unter Verzicht auf Searchconditions ein Gleichnis

Aufgabenfeld Projektion und/oder VIEW

  1. Gesucht sind Personalnummer, Vorname, Namenszusatz und Name aller erfassten Professoren! - Dateiname:  VIEW01
  2. Gesucht ist die Liste aller Vornamen, Namenszusatz und  Namen der eingeschriebenen Studenten! - Dateiname: VIEW02
  3. Bestimmen Sie eine Liste aller Vorlesungen (alle Angabe zu allen Vorlesungen)! - Dateiname: VIEW03
  4. Welcher Professor (alle Angaben) hält welche Vorlesung (zum Verständnis notwendige Angaben) (das ist dann schon eine Verbindung - Fachsprache: ein JOIN)? - Achtung! hier das Entity HAELT mit in die Projektion einbeziehen, jedoch nicht in den VIEW! - Dateiname: VIEW04
  5. Wer (welcher Professor mit allen Angaben) hat welchen Lehrstuhl (zum Verständnis notwendige Angaben) inne? Streng genommen ist das schon 'ne Searchcondition, denn alle, welche keinen Lehrstuhl inne haben, dürften nicht angezeigt werden! - Dateiname: VIEW05
  6. Gesucht sind Vornamen, Namenszusätze, Namen und  Noten der eingeschriebenen Studenten! - Dateiname: VIEW06
Lösungen

2. Ausdrücke in der SQL history menue scroll up

Ausdrücke werden insbesondere bei der Anfrage mit statistischem Charakter bedeutsam, oft steht im Ergebnis der Standard-SQL in genau so vielen Fällen ein Ergebnis, welches einer Zurodung bedarf. Hier helfen faktisch eingefügte Textfelder, die nix weiter tun, als das ganze ein wenig beschreiben. Aber auch hier Achtung: 's gibt zwei Möglichkeiten, solche Merkmale zu Verwenden! Ausdrücke gewinnen bei Anwendung der Funktionen besondere Bedeutung. Die Anweisung AS ausdruck aus der  Standard-SQL kommt hier zur Anwendung.

Zum ersten: generiere einen Attributwert - also ein Textfeld mit dieser Datenbeschreibung in einem Attrributwert (einer Datenzelle:
  • dann muss hier ein "irgendwie" bezeichneter Ausdruck (faktisch ein Variablenbezeichner) organisiert werden - z. B. Ausdruck_nummer: - immer gefolgt von einem Doppelpunkt
  • der Ausdruck wird automatisch generiert, wenn der Text in Anführungszeichen gesetzt wird
  • der zu generierende Ausdruck selbst muss in Anführungszeichen gesetzt werden
  • der Ausdruck darf Leerezeichen sowie viele Sonderzeichen enthalten und max. 64 Zeichen lang sein

Zum zweiten: generiere eine Beschriftung zu einem vorhandenen Datenmerkmal (Datenfeld, Feldnamen)

  • dann muss hier der "irgendwie" bezeichnete Ausdruck (faktisch ein Variablenbezeichner) umbenannt werden - z. B. Datenfeldbezeichner: - immer gefolgt von einem Doppelpunkt
  • der Ausdruck wird automatisch generiert, und darf keine Leer- oder Sonderzeichen enthalten
  • der zu erstellende Feldbezeichner selbst muss in Anführungszeichen gesetzt werden 
  • als Operator muss ein beliebiger Text oder eine Funktion agieren
Beratungsmuster:

Ausdruck im Tupel

Ausdruck im Attributbezeichner

Welcher Student hat bei welchem Professor Vorlesung? Zu erzeugen ist eine SQL-Anweisung, in welcher ein Merkmal mit der Bezeichnung "besucht Vorlesung bei:" als Ausdruck generiert wird

Welcher Student hat welche Note im Fach Datenbanken? Zu erzeugen ist eine SQL-Anweisung, in welcher ein Merkmalsbezeichner mit dem Inhalt "erreicht im Fach Datenbanken" als Ausdruck generiert wird

Generierung eines Attributs einschließlich Attributwert via SQL

Generirung eines Bezeichners für ein vorhandenes Attribut

VIEW eines Attributs einschließlich Attributwert via SQL

VIEW eines Bezeichners für ein vorhandenes Attribut

SQL eines Attributs einschließlich Attributwertvia

VIEW eines Bezeichners für ein vorhandenes Attribut

SELECT [STUDENT].[ANREDE], [STUDENT].[TITEL], [STUDENT].[VORNAME], [STUDENT].[ZUSATZ], [STUDENT].[NAME], "besucht Vorlesung bei:" AS Ausdr1, [PROF].[TITEL], [PROF].[TITEL], [PROF].[ANREDE], [PROF].[VORNAME], [PROF].[ZUSATZ], [PROF].[NAME]
FROM (VORLESUNG INNER JOIN (STUDENT INNER JOIN BESUCHT ON [STUDENT].[IMMA_NR]=[BESUCHT].[IMMA_NR]) ON [VORLESUNG].[VL_NR]=[BESUCHT].[VL_NR]) INNER JOIN (PROF INNER JOIN HAELT ON [PROF].[PERS_NR]=[HAELT].[PERS_NR]) ON [VORLESUNG].[VL_NR]=[HAELT].[VL_NR];
SELECT STUDENT.ANREDE, STUDENT.TITEL, STUDENT.VORNAME, STUDENT.ZUSATZ, STUDENT.NAME, [NOTEN.DATABASE] AS [Erreicht im Fach Datenbanken]
FROM STUDENT INNER JOIN NOTEN ON STUDENT.IMMA_NR = NOTEN.IMMA_NR;

Aufgabenfeld Ausdrücke in Projektion und/oder VIEW

  1. Erstellen Sie eine Liste aller Noten aller Studenten mit der Fachbezeichnung des Faches "Datenbanknote:" als Merkmalswert in jedem Tupel (jedem Datensatz)! - Dateiname:  AUSDRUCK01
  2. Erstellen Sie eine Liste aller Noten aller Studenten mit der Fachbezeichnung des Faches "Datenbanknote:" als Merkmal! - Dateiname:  AUSDRUCK02
Lösungen

3. Bedingungen in der WHERE-Klausel (Search-Conditions) history menue scroll up

Searchconditions sind das erste Salz in der Suppe aller SQL-Anweisungen. Bereits hier muss der Programmierer ein gesundes Maß logischem "Maschinendenken" mitbringen, denn die Anfrage muss natürlich entsprechend den logischen Erfordernissen der SQL gestellt werden.
Anzuzeigen (VIEW)sind sind nicht die durch die Anfragen faktisch bekannten Fakten - diese müssen lediglich in der Projektion eingesetzt werden.

die allgemeine Searchcondition lautet: WHERE <search condition> (true oder false)
Searchcondition heißt Suchbedingung oder -kriterium - das ist ein Vergleichsmuster, nach welchem im Zieldatensatz gesucht wird
  • Vergleichsoperatoren:
    • = ist gleich == ist genau gleich (unterscheidet auch die Groß- und Kleinschreibung) - kennt Access schon mal nicht :-(
    • <> ist ungleich
    • < ist kleiner als
    • <= ist kleiner gleich als
    • > ist größer als
    • >= ist größer gleich als
  • Zieldatensätze enthalten einen NULLWERTE: Ist NULL oder die Umkehrung: Ist Nicht NULL
  • Prädikate können mit AND, OR und NOT zu komplexeren Bedingungen verknüpft werden - Logik mit Vorranganalyse - siehe hier
  • Platzhalter:
    • JOKER: * steht für eine beliebige Menge beliebiger Zeichen - einschließlich der Menge 0
      • *e* findet alle Einträge, welche im Vergleichsmuster an beliebiger Stelle ein "e" enthalten - also: Meyer, Lehrer. leer - nicht aber: Hoppla, Dortmund oder blauäugig, da hier das Suchkriterium nicht erfüllt wird
      • Me* findet alle Einträge, welche im Vergleichsmuster mit der Zeichenfolge "Me" beginnen - also: Meyer, Meinhardt, Meerrettich - nicht aber: Hoppelpoppel oder Fußball, da hier das Suchkriterium nicht erfüllt wird
      • *t findet alle Einträge, welche im Vergleichsmuster mit "t" enden - also: Camembert, Robert - nicht aber: Blumentopf oder Firlefanz, da hier das Suchkriterium nicht erfüllt wird
      • *.12.88 findet alle Datumseinträge, welche im Dezember 1988 datiert wurden - also: 12.12.88; 05.12.88  - nicht aber: 12.05.88; 01.11.86, da hier das Suchkriterium nicht erfüllt wird
      • 12.*.88 findet alle Datumseinträge, welche im Bereich des 12. eines jeden Monats im Jahre 1988 datiert wurden - also: 12.12.88; 13.01.88  - nicht aber: 14.05.88; 12.11.86, da hier das Suchkriterium nicht erfüllt wird
    • WILDCARD: ? steht für genau ein beliebiges Zeichen
      • ??? findet alle Einträge, welche im Vergleichsmuster genau aus drei Zeichen bestehen - also: Luv, Lee - nicht aber: Kreuzung, Hoppla, Ei oder M , da hier das Suchkriterium nicht erfüllt wird
      • M?y* findet alle Einträge, welche im Vergleichsmuster mit "M" beginnen und als drittes Zeichen ein "y" führen, gefolgt von einer beliebigen Menge weiterer Zeichen - also: Meyer; Omy Gott, was für'n Scheiss! - nicht aber Hoola-Hopp und Help me
      • ??? ODER ???? findet alle Einträge, welche im Vergleichsmuster genau aus drei oder vier Zeichen bestehen - also: Luv, Hoop, Lee, Hank - nicht aber: Kreuzung, Hoppla, Ei oder M , da hier das Suchkriterium nicht erfüllt wird
    • Gruppen-JOKER:  [..] Zeichenmuster - steht für die in den Klammern stehenden Zeichen - gilt auch für das einzelne Zeichen
      • ??[ea]*" findet "Tea" und "Neandertaler" - nicht aber "Wir", "Kollision" und "Erde" 
    • WILDCARD: # numerisches WILDCARD - steht für genau eine Ziffer
    • WILDCARD: ! Ausschlussoperator - schließt genau die nachfolgende Zeichengruppe auch vereinzelt aus (nur im Zusammenwirken mit dem Gruppenjoker)
      • "??[!ea]*" findet "Wir", "Kollision" und "Erde" - nicht aber "Tea" und "Neandertaler"
    • JOKER und WILDCARD lassen sich in Text, Zahl und Datum zum Ausfiltern beliebiger Mengen beliebiger Zeichen einsetzen
    • JOKER und WILDCARD sind nicht in allen SQL-Systemen identisch in FoxPro wird "_" als JOKER und das "%"-Zeichen als WILDCARD verwendet - 's wär' sonst zu einfach :-(
      • Zieldatensätze beginnen mit einem "M": LIKE "M*"
      • Zieldatensätze enthalten ein "m": LIKE "*m*"
      • Zieldatensätze enthalten genau "M": LIKE "M"
      • Zieldatensätze liegen zwischen "I" und "K": >="I" AND <="K"
      • Zieldatensätze enthalten genau ein einzelnes beliebiges Zeichen: LIKE "?" (LIKE muss in der Entwurfsansicht der Abfrage nicht mit notiert werden)
  • Zieldatensätze enthalten ein Datum: #31.12.1997#
  • Einsatz von JOKER und/oder Wildcard im Datum - dann entfällt das #
  • Datum als Funktion liefert das Systemdatum
  • auslassen der Jahresangabe setzt das aktuelle Jahr
  • Wahrheitswerte:
    • Wahr für Bedingung erfüllt
    • Falsch für Bedingung nicht erfüllt
  • Beispielmuster
Lösungsmuster:

UND-Verknüpfung zweier Bedingungen

ODER-Verknüpfung zweier Bedingungen

Welche Studenten kommen aus Berlin und haben Bafög-Einkommen? - Dateiname: SEARCH90 Welche Studenten kommen aus Berlin oder Hamburg? - Dateiname: SEARCH90

Entwurfsansicht derSQL-Anweseisung auf einer Tabelle mit zwei UND-verknüpften Suchkriterien

Entwurfsansicht derSQL-Anweseisung auf einer Tabelle mit zwei ODER-verknüpften Suchkriterien

VIEW derSQL-Anweseisung auf einer Tabelle mit zwei UND-verknüpften Suchkriterien

VIEW derSQL-Anweseisung auf einer Tabelle mit zwei ODER-verknüpften Suchkriterien

SQL-Anweseisung auf einer Tabelle mit zwei UND-verknüpften Suchkriterien

SQL-Anweseisung auf einer Tabelle mit zwei ODER-verknüpften Suchkriterien

SELECT STUDENT.VORNAME, STUDENT.ZUSATZ, STUDENT.NAME, STUDENT.ORT, STUDENT.BAFOEG
FROM STUDENT
WHERE (((STUDENT.ORT)="Berlin") AND ((STUDENT.BAFOEG) Is Not Null));
SELECT STUDENT.VORNAME, STUDENT.ZUSATZ, STUDENT.NAME
FROM STUDENT
WHERE (((STUDENT.ORT)="Berlin")) OR (((STUDENT.ORT)="Hamburg"));

Aufgabenfeld Selektion

  1. Wer von den Studenten hat seinen Hauptwohnsitz in München (der Ort "München" ist richtigerweise nicht mit in die Projektion einzubeziehen, denn es kommen ja eh alle die Gesuchten aus München)? - Dateiname: SEARCH01 - die Lösung gibt's hier
  2. unsinnig aber auszuführen ist die Abfrage: Wer wohnt in Berlin und in München - das ist logischerweise keiner, denn es kann kein Student gleichzeitig seinen Hauptwohnsitz in Berlin und in München haben)? - Dateiname: SEARCH02 - die Lösung gibt's hier
  3. ... umgekehrt (also ODER-verknüpft in der Searchcondition geht dies sehr wohl, denn es müssen sogar (logischerweise!) mehr Studenten in Berlin ODER München ihren Hauptwohnsitz haben, als nur in München allein! - Dateiname: SEARCH03 - die Lösung gibt's hier
  4. Wer der aufgeführten Studenten wohnt auf der Münchener Leopoldstraße? - Dateiname: SEARCH04 - die Lösung gibt's hier
  5. Wer wohnt auf der Münchener Leopoldstraße im gleichen Haus Nr. 42? - Dateiname: SEARCH05 - die Lösung gibt's hier
  6. Wer wohnt alles in der Königsstraße 7? - Dateiname: SEARCH06 - die Lösung gibt's hier
  7. Wer von den Studenten wohnt in München auf zwei aufeinanderfolgenden Hausnummern? - begründen Sie in der Datei SEARCH07.TXT, warum diese Abfrage nicht möglich und nennen Sie mindestens zwei Voraussetzungen,  um auch diese Abfrage korrekt abzuwickeln! - die Lösung gibt's hier
  8. Welcher Student wohnt in Berlin auf der Beethovenstraße? - Dateiname: SEARCH08 - die Lösung gibt's hier
  9. Wer der aufgelisteten Studenten wohnt am Großen Garten? - Dateiname: SEARCH09 - die Lösung gibt's hier
  10. Wessen Mail-Adresse der erfassten Studenten wird bei "Kolibri" gehostet? - Dateiname: SEARCH10 - die Lösung gibt's hier
  11. Wessen Studenten-Nachname beginnt mit "P"? - Dateiname: SEARCH11 - die Lösung gibt's hier
  12. Wessen Studenten-Nachname führt als drittes Zeichen ein "e"? - Dateiname: SEARCH12 - die Lösung gibt's hier
  13. Wessen Studenten-Nachname ist genau drei Zeichen lang? - Dateiname: SEARCH13 - die Lösung gibt's hier
  14. Wessen Studenten-Nachname führt als drittes Zeichen ein "t" und ist maximal 5 Zeichen lang? - Dateiname: SEARCH14 - die Lösung gibt's hier
  15. Wessen Studenten-Nachname führt als drittes Zeichen ein "e" und ist genau 5 Zeichen lang? - Dateiname: SEARCH15 - die Lösung gibt's hier
  16. Welche der erfassten Studenten wurden am 14.12.1979 geboren - Achtung: Daten in Doppelkreuz und immer vollständig - also: #08.08.1986#? - Dateiname: SEARCH16 - die Lösung gibt's hier
  17. Welche der erfassten Studenten wurden im Zeitraum von 07.12.1977 bis 23.05.1979 geboren - Achtung: Daten in Doppelkreuz und immer vollständig - also: #08.08.1986#? - Dateiname: SEARCH17 - die Lösung gibt's hier
  18. Welche der erfassten Studenten wurden im Jahr 1979 geboren - Achtung: Daten in Doppelkreuz und immer vollständig - also: #08.08.1986#? - Dateiname: SEARCH18 - die Lösung gibt's hier
  19. Welche der erfassten Studenten wurden am 13.9. geboren - Achtung: Daten in Doppelkreuz und immer vollständig oder unter Verwendung entsprechender JOKER und/oder WILDCARDs, jedoch ohne "#" angeben - also: 08.08.#? - Dateiname: SEARCH19 - die Lösung gibt's hier
  20. Welche der erfassten Studenten kommen aus Berlin und haben keine Fahrerlaubnis? - Dateiname: SEARCH20 - die Lösung gibt's hier
  21. Welche der erfassten Studenten bekommen kein Bafög? - Dateiname: SEARCH21 - die Lösung gibt's hier
  22. Welche der erfassten Studenten haben ihre Website noch nicht aktiviert? - Dateiname: SEARCH22 und anders herum SEARCH22a - die Lösung gibt's hier
  23. Wer bekommt mehr als 320,-€ Bafög? - Dateiname: SEARCH23 - die Lösung gibt's hier
  24. Wessen Bafög beträgt zwischen 320,-€ und 380,-€?- Dateiname: SEARCH24 - die Lösung gibt's hier
  25. Wer von den eingeschriebenen Studenten aus München hat bei einem Professor Vorlesung, der weniger als 4000,-€ Einkommen hat? Achtung: hier muss wirklich das ERM hinzugezogen werden, um zu ermitteln, welche Entities an der Referenz beteiligt sind! - Dateiname: SEARCH25 - die Lösung gibt's hier
  26. Wo wohnt Prof. Lan Z. Elot und wie viel Gehalt bezieht er im Monat? - Dateiname: SEARCH26 - die Lösung gibt's hier
  27. Welche Professoren haben einen  5 Zeichen langen Nachnamen - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? - Dateiname: SEARCH27 - die Lösung gibt's hier
  28. Welche Studenten sind verheiratet und nicht vorbestraft oder kommen aus München - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? Achtung: hier muss wirklich logisch gedacht werden werden, um zu ermitteln, welche Bedingungen wie gelten - man kann sich ja die Suchkriterien mit in den VIEW ziehen! - Dateiname: SEARCH28 verändere das ODER München zum UND München - vergleiche! - Dateiname: SEARCH28a - die Lösung gibt's hier
  29. Welche weiblichen Studenten sind verheiratet, nicht vorbestraft und nicht größer als 1,73 m - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? - Dateiname: SEARCH29 - die Lösung gibt's hier
  30. Welche weiblichen Studenten sind alleinerziehend, nicht vorbestraft aber größer als 1,73 m - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? - Dateiname: SEARCH30 - die Lösung gibt's hier
  31. Welche alleinerziehenden weiblichen Studenten haben ihre Website aktiviert - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? - Dateiname: SEARCH31 - die Lösung gibt's hier
  32. Anzuzeigen ist das Bafög aller männlichen Studenten, welche vorbestraft sind - anzuzeigen sind Titel, Vorname, Zusatz und Nachname? - Dateiname: SEARCH32 - die Lösung gibt's hier
  33. Anzuzeigen ist die Immatrikulationsnummer aller nicht vorbestraften weiblichen Studenten, deren Geburtsdatum zwischen dem 11. und 19. eines Monats liegt! - Dateiname: SEARCH33 - die Lösung gibt's hier
  34. Gesucht sind die Studenten, welche als drittes Zeichen im Nachnamen "a", "e", "d" "f" oder "k" führen! - Dateiname: SEARCH34 - die Lösung gibt's hier
  35. Gesucht sind die Studenten, welche als drittes Zeichen im Nachnamen nicht "g", "b", "n" "d" oder "r" führen! - Dateiname: SEARCH35 - die Lösung gibt's hier
Lösungen

4. Komplexe Suchedingungen mit Vorrangregelung in der WHERE-Klausel (Search-Conditions) history menue scroll up

Komplexe Searchconditions ergeben sich bei mehr als einer ungleichen logischen Verknüpfungen von Suchkriterien

Wir haben sprachliche Probleme mit den logischen Operatoren:
  • so geben wir an, nach Studenten zu suchen, die nicht aus München oder nicht aus Berlin kommen, meinen doch aber Studenten, die nicht aus Berlin und nicht aus München kommen
  • mit den beiden Aussagen erreicht man aber einander vollkommen entgegengesetzte Ergebnisse - und das liegt daran, das wir umgangssprachlich die Fragezeile von links nach rechts abarbeiten - die Datenbank aber nicht
die allgemeine Searchcondition lautet: WHERE <search condition> (true oder false) OPERATOR <search condition> (true oder false)

Höchste Wichtung (wird zuerst abgearbeitet)

Wichtung nach Not und vor OR und XOR

Wichtung nach Not und AND, aber vor XOR

Niedrigste Wichtung (wird zuletzt abgearbeitet)

Logisches NOT(Nicht)

Logisches AND (Und)

Logisches OR (Oder)

Logisches XOR (Exclusiv-Oder)

Bedingung Logisches Ergebnis
false (falsch) true (wahr)

Bedinung 1

Bedingung 2

Logisches Ergebnis

false (falsch)

false (falsch)

false (falsch)

false (falsch)

true (wahr)

false (falsch)

true (wahr)

false (falsch)

false (falsch)

true (wahr) true (wahr) true (wahr)
Bedinung 1 Bedingung 2 Logisches Ergebnis
false (falsch) false (falsch) false (falsch)
false (falsch) true (wahr) true (wahr)
true (wahr) false (falsch) true (wahr)
true (wahr) true (wahr) true (wahr)
Bedinung 1 Bedingung 2 Logisches Ergebnis
false (falsch) false (falsch) false (falsch)
false (falsch) true (wahr) true (wahr)
true (wahr) false (falsch) true (wahr)
true (wahr) true (wahr) false (falsch)
die logischen Aussagen können mit dem Negator (auch getrennt!) verknüpft werden und oder durch Klammersetzung in ihrer Wichtung entsprechend gesetzt werden
mehrere Searchconditions können geschachtelt und/oder gefolgt werden - darüber entscheiden die Fragestellung und die logischen Operatoren mit ihrer Wichtung zueinander (das ist die Reihenfolge der Abarbeitung - siehe logische Tabellen oben)
das hat natürlich 'ne enge Bindung zur Bool'schen Aussagen-Logik sowie auch zu den de Morgan'schen Additionstheoremen
  • beachten Sie die Prioritäten der logischen Funktionen: NOT AND OR XOR oder Klammerung
  • insbesondere OR-Bedingungen nach einer AND-Klausel müssen extra geklammert werden, da aufgrund der Vorrangautomatik der AND-Ausdruck zuerst ausgewertet und anschließend mit OR verknüpft wird (Vergleiche dazu Aufgabe 14 - falsche Klammersetzung führt zu falschem Ergebnis!!!)
  • in der ACCESS-Entwurfsansicht müssen die OR-Bedingungen dann in eine Zeile geschrieben, in SQL zusätzlich geklammert werden

Aufgabenfeld komplexe Selektion mit Positiv- und Negativlisten sowie Vorrangautomatik

  1. Wer von den eingeschriebenen Studenten aus München hat bei einem Professor Vorlesung, der mehr als 4000,-€ Einkommen hat, der in der Universitätsstadt wohnt oder aus Berlin kommt? - Dateiname: COMPLEX01 - die Lösung gibt's hier
  2. Wie viel Bafög haben die Studenten, die entweder aus Berlin oder aus Potsdam kommen, jedoch kein eigenes Fahrzeug angemeldet haben (die persönlichen Daten der Studenten werden ebenfalls benötigt!)? - Dateiname: COMPLEX02 - die Lösung gibt's hier
  3. Wer der eingeschriebenen Studenten kommt nicht aus München oder Potsdam, hat ein eigenes Auto und bezieht zusätzlich noch Kindergeld? - Dateiname: COMPLEX03 - die Lösung gibt's hier
  4. Wie viel Kindergeld bekommen die Studenten, die  entweder aus Berlin oder aus München kommen, gleichzeitig keine Nebenwohnung haben und im Jahr 1978 geboren wurden? - Dateiname: COMPLEX04 - die Lösung gibt's hier
  5. Welche Studenten kommen aus Berlin und haben ein Hobby, welches nicht Angeln oder Schiffsmodellbau ist? - Dateiname: COMPLEX05 - die Lösung gibt's hier
  6. Welche Studenten kommen nicht aus Berlin oder Potsdam, haben zwischen als 300,- € und 600,-€ Bafög und kein Fahrzeug oder bei Herrn G. Brechen Vorlesung? - Dateiname: COMPLEX06 - die Lösung gibt's hier
  7. Welche Studenten beziehen kein Bafög oder haben keine Fahrerlaubnis und kommen aus Berlin oder München? - Dateiname: COMPLEX07 - die Lösung gibt's hier
  8. Welche Studenten kommen nicht aus Rostock und nicht aus Berlin? - Dateiname: COMPLEX08 - die Lösung gibt's hier
Lösungen

5. Indirekte Abfragen mit komplexen Bedingungen sowie Vorrangregelung in der WHERE-Klausel (Search-Conditions) history menue scroll up

Indirekt bedeutet hierbei, dass das eigentliche Suchkriterium gar nicht mit in einem Entiytyp eingetragen ist und das damit in der Praxis u. U. fragwürdige Ergebnisse erzielt werden. Jedoch ist die grundlegende Idee gut und richtige Abfragen beinhalten zumindest eine Teilmenge alle möglichen absolut korrekten Abfragen.

Wir haben sprachliche Probleme mit den logischen Operatoren:
  • so geben wir an, nach Studenten zu suchen, die nicht aus München oder nicht aus Berlin kommen, meinen doch aber Studenten, die nicht aus Berlin und nicht aus München kommen
  • mit den beiden Aussagen erreicht man aber einander vollkommen entgegengesetzte Ergebnisse - und das liegt daran, das wir umgangssprachlich die Fragezeile von links nach rechts abarbeiten - die Datenbank aber nicht
die allgemeine Searchcondition lautet: WHERE <search condition> (true oder false)
mehrere Searchconditions können als Positiv- oder Negativliste aufgebaut werden - darüber entscheidet der Zweck und der NOT-Operator
  • beachten Sie die Prioritäten der logischen Funktionen: NOT AND OR XOR oder Klammerung
  • insbesondere OR-Bedingungen nach einer AND-Klausel müssen extra geklammert werden, da aufgrund der Vorrangautomatik der AND-Ausdruck zuerst ausgewertet und anschließend mit OR verknüpft wird (Vergleiche dazu Aufgabe 14 - falsche Klammersetzung führt zu falschem Ergebnis!!!)
  • in der ACCESS-Entwurfsansicht müssen die OR-Bedingungen dann in eine Zeile geschrieben, in SQL zusätzlich geklammert werden

Aufgabenfeld Selektion mit indirekter Suchbedingung

  1. Wer von den Studenten ist Übergewichtig (als Übergewichtig gelten: Männer ab 18 Jahre mit mehr als 75 kg  und Frauen ab 18 Jahre mit mehr als 65 kg Gewicht)?  - Dateiname: INDIREKT01 - die Lösung gibt's hier
  2. Welche männlichen Studenten sind für ihre Größe zu dick (das sind Männer zwischen 1,5 und 1,65 m mit mehr als 60 kg,  zwischen 1,65 und 1,75 m mit mehr als 70 kg,  zwischen 1,75 und 1,85 m mit mehr als 80 kg,  zwischen 1,85 und 1,905 m mit mehr als 90 kg und zwischen 1,95 und 2,0 m mit mehr als 100 kg)? - Dateiname: INDIREKT02 - die Lösung gibt's hier
  3. Welche weiblichen Studenten sind für ihr Gewicht zu klein (das sind Frauen zwischen 1,5 und 1,65 m mit mehr als 55 kg,  zwischen 1,65 und 1,75 m mit mehr als 65 kg,  zwischen 1,75 und 1,85 m mit mehr als 75 kg,  zwischen 1,85 und 1,95 m mit mehr als 85 kg und zwischen 1,95 und 2,0 m mit mehr als 95 kg)? - Dateiname: INDIREKT03 - die Lösung gibt's hier
  4. Welche Studenten kommen für die uni-interne Webpublikation in Frage (das sind Männer mit mehr als 20 Jahren, einer Mailadresse sowie einer aktiven Website und Frauen über 19 Jahren, einer Mailadresse sowie einer aktiven Website)? - Dateiname: INDIREKT04 - die Lösung gibt's hier
  5. Welche Studenten kommen für die Basketballmannschaft in Frage (das sind Männer mit mehr als 1,90 m und Frauen mit mehr als 1,75 Körpergröße)? - Dateiname: INDIREKT05 - die Lösung gibt's hier
Lösungen

6. Das Mengenprädikat IN history menue scroll up

Das IN-Prädikat verkürzt theoretisch nur eine sehr umfangreiche ODER-Verknüpfung (listet eine große Menge zielgenauer Suchkriterien auf) von Searchconditions, indem sie als Menge aufgezählt werden. Für komplexe Abfragen bietet sie die Möglichkeit, Subqueries zu nesten.

Achtung: Trennzeichen für die Aufzählung der Prüfmuster ist in ACCESS wie in der Standard-SQL das Komma - in der Entwurfsansicht jedoch das Semikolon
die allgemeine Searchcondition lautet: SELECT <projection> FROM join WHERE bezeichner IN ("ausdruck1","ausdruck2"); - Achtung: in der Entwurfsansicht von ACCESS Semikolon!
die einzelnen zielscharfen Suchkriterien müssen in Anführungszeichen stehen
mehrere Searchconditions können als Positiv- oder Negativliste aufgebaut werden - darüber entscheidet der Zweck und der NOT-Operator
  • beachte Priorität: NOT AND OR XOR oder Klammerung
  • insbesondere OR-Bedingungen nach einer AND-Klausel müssen extra geklammert werden, da aufgrund der Vorrangautomatik der AND-Ausdruck zuerst ausgewertet und anschließend mit OR verknüpft wird (Vergleiche dazu Aufgabe 14 - falsche Klammersetzung führt zu falschem Ergebnis!!!)
  • in der ACCESS-Entwurfsansicht müssen die OR-Bedingungen dann in eine Zeile geschrieben, in SQL zusätzlich geklammert werden

Aufgabenfeld IN-Prädikat - nicht mit ODER-Verknüpfung zu lösen!

  1. Wer kommt aus München, Hannover, Leipzig, Potsdam, Rostock und Berlin? - Dateiname: IN01 - die Lösung gibt's hier
  2. Welche Studenten kommen nicht aus Berlin, Leipzig und München und sind größer als 1,80 m?: IN02 - die Lösung gibt's hier
  3. Welche Studenten kommen aus Berlin, Rostock, Potsdam und München, sind größer als 1,80 m und haben mehr als 320,-€ Bafög? - Dateiname: IN03 - die Lösung gibt's hier
  4. Wie viel Kindergeld bekommen die Studenten, die  nicht aus Berlin, Rostock und aus München kommen, gleichzeitig keine Nebenwohnung haben und sind im Jahr 1978 geboren wurden - Dateiname: IN04 - die Lösung gibt's hier
  5. Welche Studenten verbergen sich hinter den Immatrikulationsnummern: 21C0841B, 52C0585A, 21C0484B, 21C0771A, 24C0832A, 26C0816A, 27C0539A? - Dateiname: IN05 - die Lösung gibt's hier
Lösungen

7. Das Mengenprädikat BETWEEN (gekoppelt mit IN-Prädikat sowie Searchconditions) history menue scroll up

Das BETWEEN Prädikat - also "zwischen" gibt die untere und obere Grenze eines Bereiches an, wobei die exakten Grenzwerte mit in das Ergebnis eingeschlossen sind. Die BETWEEN-Operation ist auch in Verbindung mit Jokern sowie Wildcards möglich.

die allgemeine Searchcondition lautet: SELECT <projection> FROM <join> WHERE <bezeichner> BETWEEN (<ausdruck1> AND <ausdruck2>);
Achtung: das untere Kriterium ist in die Ergebnismenge mit einbezogen, das obere nicht!
ist das BETWEEN-Prädikat an weitere Untersuchungskriterien gebunden, so sind dies, wenn nicht explizit ausgewiesen und logisch richtig, UND-Verknüpfungen

Aufgabenfeld zum BETWEEN-Prädikat

  1. Wer von den eingeschriebenen Studenten und Professoren hat einen Nachnamen, dessen Anfangsbuchstabe im Bereich zwischen "M" und "R" liegt? - Dateiname: BETWEEN01 - die Lösung gibt's hier
  2. Wessen Note der aufgeführten Studenten im Fach Datenbanken liegt zwischen 1,3 und 3,3? - Dateiname: BETWEEN02 - die Lösung gibt's hier
  3. Wer der eingeschriebenen Studenten kommt nicht aus München, Leipzig, Rostock, Marburg oder Potsdam, hat ein eigenes Auto, bezieht zusätzlich noch Kindergeld sowie ein Bafög zwischen 700,- und 800,- €? - Dateiname: BETWEEN03 - die Lösung gibt's hier
  4. Welche der aufgeführten Professoren haben ein Einkommen zwischen 5500,- und 6300,-€ ? - Dateiname: BETWEEN04 - die Lösung gibt's hier
  5. Welche Studenten, deren Immatrikulationsnummer zwischen 22 und 56 beginnt kommen aus München? - Dateiname: BETWEEN05 - die Lösung gibt's hier
  6. Welche Vorlesung, die mit den Nummern11 bis 65 beginnt, findet am Donnerstag statt? - Dateiname: BETWEEN06 - die Lösung gibt's hier
Lösungen

8. JOINS in der FROM Klausel history menue scroll up

JOINs sind der Hammer der Datenbankabfrage schlechthin. Dabei verhalten sie sich unauffällig und treten streng genommen unter ACCESS bei sauber gestalteten ERM nur auf ausdrücklichen Wunsch hin in Erscheinung, da alles automatisch läuft, wenn es denn kann. Kann es aber nur, wenn die Spielregeln der Schlüsselkonzepte, Integrität sowie auch der SQL selbst korrekt eingehalten werden.

JOINING OUTER-JOIN INNER-JOIN AUTO-JOIN AUTO-JOIN

Database-JOINING

OUTER-JOIN

INNER-JOIN

 

Auto-JOINs

Equi-JOINs

die allgemeine Searchcondition lautet: FROM <table_1> ,<table_2>, ... ,<table_n>
mehrere Seachconditions können als Positiv- oder Negativliste aufgebaut werden - darüber entscheidet der Zweck und der NOT-Operator
  • beachten Sie die Prioritäten der logischen Funktionen: NOT AND OR XOR oder Klammerung
  • insbesondere OR-Bedingungen nach einer AND-Klausel müssen extra geklammert werden, da aufgrund der Vorrangautomatik der AND-Ausdruck zuerst ausgewertet und anschließend mit OR verknüpft wird (Vergleiche dazu Aufgabe 14 - falsche Klammersetzung führt zu falschem Ergebnis!!!)
  • in der ACCESS-Entwurfsansicht müssen die OR-Bedingungen dann in eine Zeile geschrieben, in SQL zusätzlich geklammert werden

allgemein: FROM <tabelle_1> JOIN <tabelle_2>

INNER-Join oder auch Natürlicher Verbund

... ist die Standard-Verbindung über Fremdschlüssel! Jedem Tupel des einen Entity ist genau ein Tupel des anderen Enity zugeordnet

AUTO-JOIN Selbstbezug einer Tabelle

OUTER-Join Natürlicher Verbund

  • Left-OUTER-JOIN
  • Right-OUTER-JOIN
  • UNION-Operationen

Union-Operator

SQL-spezifische Abfragebefehle ermöglichen die Erstellung einiger spezieller Arten von SQL-Abfragen. Weil diese Abfragetypen nicht adäquat im Entwurfsfenster dargestellt werden können, weigert sich ACCESS bei derartigen Abfragen von vornherein die Entwurfsansicht zu aktivieren.
Gespeicherte UNION-Abfragen (Vereinigungsabfragen) werden durch das unten dargestellte Symbol angegeben. UNION bedeutet in diesem Falle, dass im zugehörigen Datenblatt in einem einzigen Feld Daten dargestellt werden, die mehreren Tabellen entstammen.

Aufgabenfeld zum BETWEEN-Prädikat

  1. Wer von den eingeschriebenen Studenten und Professoren hat einen Nachnamen, dessen Anfangsbuchstabe im Bereich zwischen "M" und "R" liegt? - Dateiname: JOIN01 - die Lösung gibt's hier
  2. Wessen Note der aufgeführten Studenten im Fach Datenbanken liegt zwischen 1,3 und 3,3? - Dateiname: JOIN02 - die Lösung gibt's hier
  3. Wer der eingeschriebenen Studenten kommt nicht aus München, Leipzig, Rostock, Marburg oder Potsdam, hat ein eigenes Auto, bezieht zusätzlich noch Kindergeld sowie ein Bafög zwischen 700,- und 800,- €? - Dateiname: JOIN03 - die Lösung gibt's hier
  4. Welche der aufgeführten Professoren haben ein Einkommen zwischen 5500,- und 6300,-€ ? - Dateiname: JOIN04 - die Lösung gibt's hier
  5. Welche Studenten, deren Immatrikulationsnummer zwischen 22 und 56 beginnt kommen aus München? - Dateiname: JOIN05 - die Lösung gibt's hier
  6. Welche Vorlesung, die mit den Nummern11 bis 65 beginnt, findet am Donnerstag statt? - Dateiname: JOIN06 - die Lösung gibt's hier
Lösungen

9. Berechnete Abfragen history menue scroll up

Berechnete Abfragen wenden die bekannten mathematischen Operatoren auf eine Auswahl von Merkmalswerten bzw. eine durch Selektion zusammengefasste Gruppe von Merkmalswerten an. Um eine sinnvolle Projektion zu erhalten, ist mitunter eine Ausdrucksoperation erforderlich.

die allgemeine Searchcondition lautet: SELECT <ausdruck> (operator _1) <operation> (operator_2) 
Liste zulässiger Operatoren:

Addition

Subtraktion

Multiplikation

Division

Quadrat

Wurzel

Prozent

die Berechnungsvorschriften müssen in der SQL-Ansicht formuliert werden
Dezimaltrennzeichen ist in der SQL-Ansicht der Punkt - ansonsten gelten die Standardoperatoren
keine Maßangaben in der Berechnung mitführen

Aufgabenfeld berechnete Abfragen

  1. Anzuzeigen sind das verfügbare monatliche Einkommen der Studenten - das sind Bafög zuzüglich Nebeneinkommen abzüglich Unterhaltszahlungen! - Dateiname:  RECHNUNG01 - die Lösung gibt's hier
  2. Erstellen Sie eine Liste mit zu zahlenden Beitrag für das "Studentenhilfswerk", der für alle Studenten mit positivem Einkommen 1,8 % beträgt! - Dateiname:  RECHNUNG02 - die Lösung gibt's hier
Lösungen

10. GROUP BY-Klausel sowie ORDER BY -Klausel history menue scroll up

Berechnete Abfragen wenden die bekannten mathematischen Operatoren auf eine Auswahl von Merkmalswerten bzw. eine durch Selektion zusammengefasste Gruppe von Merkmalswerten an. Um eine sinnvolle Projektion zu erhalten, ist mitunter eine Ausdrucksoperation erforderlich.

tragisch, aber nicht zu ändern - sie verhalten sich eben kritisch, die NULLWERTE: die Funktion auf NULLWERTE gelegt macht aus diesen einen eigene Gruppe (ist ja auch logisch!)
die allgemeine Searchcondition lautet für die Gruppierung: GROUP BY <feldname>
die allgemeine Searchcondition lautet für die Sortierung: ORDER BY [ASC/DESC] BY <feldname>
ASC steht für ASCANDING - Sortierung aufsteigend
DESC steht für DESCANDING - Sortierung absteigend

Aufgabenfeld Gruppierung und Sortierung

  1. Anzuzeigen ist eine namentliche Liste aller Studenten sortiert nach Geburtsdatum vom ältesten Studenten beginnen! - Dateiname:  GRUPPE01
  2. Erstellen Sie eine Liste aller Noten aller Studenten mit der Fachbezeichnung des Faches "Datenbanknote:" als Merkmal! - Dateiname:  GRUPPE02
  3. Erstellen Sie eine Liste aller Noten aller Studenten mit der Fachbezeichnung des Faches "Datenbanknote:" als Merkmal! - Dateiname:  GRUPPE03
  4. Erstellen Sie eine nach den Herkunftsorten absteigend organisierte Liste, in welcher die Nachnamen jeweils alphabetisch aufsteigend organisiert sind - Dateiname:  GRUPPE04
  5. Erstellen Sie eine Liste, in welcher die Nachnamen aller Studenten aus Berlin alphabetisch absteigend organisiert sind - Dateiname:  GRUPPE05
Lösungen

11. Aggregierende Funktionen (Statistik) history menue scroll up

Berechnete Abfragen wenden die bekannten mathematischen Operatoren auf eine Auswahl von Merkmalswerten bzw. eine durch Selektion zusammengefasste Gruppe von Merkmalswerten an. Um eine sinnvolle Projektion zu erhalten, ist mitunter eine Ausdrucksoperation erforderlich.

die allgemeine Searchcondition lautet: SELECT <ausdruck>, <Funktion> (true oder false)
nach der SELECT-Klausel eine irgendwie geartete Kommentarangabe mit Bezug auf die Berechnung setzen - Beispiel: SELECT "Besucher Vorlesung Schaltkreisentwurf" AS Kommentar,
nach der Kommentarangabe, jedoch innerhalb der SELECT-Klausel steht die statistische Funktion
in der FROM-Klausel wird die Liste der benötigten JOINs aufgeführt - also zum Beispiel: FROM VORLESUNG INNER JOIN (STUDENT INNER JOIN BESUCHT ON STUDENT.IMMA_NR = BESUCHT.IMMA_NR) ON VORLESUNG.VL_NR = BESUCHT.VL_NR
die Gruppierung muss mindestens auf das Attribut gelegt worden sein, auf welchem eine statistische Auswertung erfolgen soll - also zum Beispiel: GROUP BY STUDENT.ORT, VORLESUNG.FACH
Benötigte Felder mit Zusatzinformationen können über den Ausdrucksgenerator aufgebaut werden
  • Summe ermittelt die Summe aller Werte in einer bestimmten Spalte. Anwendbar auf Spalten vom Typ Zahl, Währung, Datum - SUM(..)
  • Maximum Anzeige des größten Wertes einer Spalte (oder einer Gruppe innerhalb einer Spalte) - MAX(..)
  • Minimum Anzeige des kleinsten Wertes einer Spalte (oder einer Gruppe innerhalb einer Spalte) - MIN(..)
  • Anzahl Bestimmen der Anzahl der Elemente einer Spalte (oder einer Gruppe innerhalb einer Spalte) - COUNT(..)
  • Durchschnitt/Mittelwert Durchschnittswert aller Werte einer Spalte (oder einer Gruppe innerhalb einer Spalte) - AVG(..)
  • Varianz Quadrat der Standardabweichung einer Spalte (oder einer Gruppe innerhalb einer Spalte) - VAR(..)
  • Standardabweichung Ermittlung der Standardabweichung (Unterschied gegenüber dem Mittelwert) - STDEV(..)
  • erster Wert ermittelt den Wert des ersten Datensatzes - FIRST(..)
  • letzter Wert ermittelt den Wert des letzten Datensatzes - LAST(..)
folgt einer Berechnungsvorschrift eine zusätzliche Bedingung, so muss diese bereits in der HAVING-Klausel geführt werden

Aufgabenfeld Aggregatfunktionen (auch als statistische Funktionen bezeichnet)

  1. Wie hoch ist das durchschnittliche Bafög aller Studenten? - Dateiname:  FUNCT01
  2. Wie hoch ist das durchschnittliche Bafög aller Studenten, die aus München kommen? - Dateiname:  FUNCT02
  3. Wie viele Studenten, die aus München kommen besuchen die Vorlesung "Schaltkreisentwurf"? - Dateiname:  FUNCT03
  4. Wie viel beträgt die höchste Miete? - Dateiname:  FUNCTION04
  5. Wie viele Studenten, die aus München kommen haben ihre Praktika nicht bestanden? - Dateiname:  FUNCT05
  6. Wie viele Studenten stammen jeweils aus dem gleichen Ort? - Dateiname:  FUNCT06
  7. Wie viele Männer unter den Studenten sind Fußballfans? - Dateiname:  FUNCT07
  8. Wie viele weibliche Studenten haben Boxen als Hobby? - Dateiname:  FUNCT08
Lösungen

12. HAVING-Klausel history menue scroll up

Sollen zusätzliche Bedingungen auf eine numerische Funktion angewandt werden, so ist hierfür die HAVING-Klause zuständig

die allgemeine Searchcondition lautet: WHERE <search condition> (true oder false)

Aufgabenfeld Aggregierende Funktionen

  1. Wie viel Euro beträgt das durchschnittliche BAFÖG aller Studenten? - Dateiname: HAVING01 - die Lösung gibt's hier
  2. Wer von den Studenten hat das höchste BAFÖG? - Dateiname: HAVING02 - die Lösung gibt's hier
  3. Wer von den Studenten hat die meisten Hobbies? - Dateiname: HAVING03 - die Lösung gibt's hier
  4. Wie viele der eingeschriebenen Studenten gehen Schwimmen als Hobby nach? - Dateiname: HAVING04 - die Lösung gibt's hier
  5. Welchen Hobbies wird am meisten nachgegangen! - Dateiname: HAVING05 - die Lösung gibt's hier
  6. Wie viel Studenten gehen Rudern und Robotertechnik als Hobby nach? - Dateiname: HAVING06 - die Lösung gibt's hier
  7. Wie viel Studenten gehen Rudern oder Robotertechnik als Hobby nach? - Dateiname: HAVING07 - die Lösung gibt's hier
  8. Welchem Hobby wird überhaupt nicht nachgegangen? - Dateiname: AGGREGAT08 - die Lösung gibt's hier
  9. Welche Studenten haben mehr als zwei Hobbies? - Dateiname: HAVING09 - die Lösung gibt's hier
  10. Welches sind die drei Lieblingshobbies aller Studenten? - Dateiname: HAVING10 - die Lösung gibt's hier
  11. Wie viele aller Studenten gehen dem Hobby mit der Nummer K7785 nach? - Dateiname: HAVING11 - die Lösung gibt's hier
  12. Wie viele männliche und wie viele weibliche Studenten gehen dem Hobby "Schauspielerei" nach? (Achtung: das sind zwei Abfragen!!!) - Dateiname: HAVING12 - die Lösung gibt's hier
  13. Wie viele Hobbies werden insgesamt von allen registrierten Studenten betrieben? - Dateiname: HAVING13 - die Lösung gibt's hier
  14. Wie viele weibliche Studenten ohne eigenes Fahrzeug gehen gern Wandern? - Dateiname: HAVING14 - die Lösung gibt's hier
  15. Wie viele männlliche Studenten mit eigenem Fahrzeug, welche gern Wandern gehen haben im Fach Datenbanken eine Not schlechter 3,6? - Dateiname: HAVING15 - die Lösung gibt's hier
  16. Wer hat die meisten Hobbies? - Dateiname: HAVING16 - die Lösung gibt's hier
  17. Wie viele nicht aus München stammende Studenten haben Elektronik als Hobby: HAVING17 - die Lösung gibt's hier
  18. Welchem Hobby wird am meisten nachgegangen? - Dateiname: HAVING18 - die Lösung gibt's hier
  19. Welches Hobby ist das beliebteste unter den männlichen Studenten? - Dateiname: HAVING19 - die Lösung gibt's hier
  20. Gibt es mehr als 100 Fußball begeisterte Studenten? - Dateiname: HAVING20 - die Lösung gibt's hier

Aggregierende (zusammenfassende) Funktionen

HAVING <function>

SELECT DISTINCTROW Avg(LS.GEHALT) AS [Das Durchschnittsgehalt]
FROM LS;

1 relevanter Zieldatensatz

28. Gesucht ist das Geburtsdatum des ältesten Studenten!

SELECT DISTINCTROW Max(IMMA.DATUM) AS [ältester Student]
FROM IMMA;

1 relevanter Zieldatensatz

Lösungen

13. Quantifizierende Prädikate history menue scroll up

Legt fest, ob und wenn ja, wie viel mal ein Zieldatensatz in die Projektion einbezogen wird. Auch kann ermittelt werden, ob überhaupt ein solcher existiert

ALL

DISTINCT

ANY

SOME

EXISTS

Aufgabenfeld quantifizierende Prädikate

  1. Geht der Student mit der ID 354 zu einer Vorlesung? - Dateiname: QUANT01 - die Lösung gibt's hier
  2. Wer von den Studenten hat das höchste BAFÖG? - Dateiname: QUANT02 - die Lösung gibt's hier
  3. Wer von den Studenten hat die meisten Hobbies? - Dateiname: QUANT03 - die Lösung gibt's hier
  4. Wie viele der eingeschriebenen Studenten gehen Schwimmen als Hobby nach? - Dateiname: QUANT04 - die Lösung gibt's hier
  5. Welchen Hobbies wird am meisten nachgegangen! - Dateiname: QUANT05 - die Lösung gibt's hier
  6. Wie viele Studenten gehen Rudern und Robotertechnik als Hobby nach? - Dateiname: QUANT06 - die Lösung gibt's hier
  7. Wie viele Studenten gehen Rudern oder Robotertechnik als Hobby nach? - Dateiname: QUANT07 - die Lösung gibt's hier
  8. Welchem Hobby wird überhaupt nicht nachgegangen? - Dateiname: QUANT08 - die Lösung gibt's hier
  9. Welche Studenten haben mehr als zwei Hobbies? - Dateiname: QUANT09 - die Lösung gibt's hier
Lösungen

14. Subqueries history menue scroll up

Subqueries sind Abfragen auf ein bereits bestehendes Abfrageergebnis - eben Unterabfragen, und diese in einer einzigen Abfrage formuliert - sozusagen ein SELECT FROM WHERE nach einem SELECT FROM WHERE


15. Bedingte Abfragen history menue scroll up

Hierbei wird die Zielprojektion auf eine durchaus gültige Abfrage erst dann ausgeführt, wenn eine jeweils zu setzende Ausgangsbedingung erfüllt ist


16. Aktionsabfragen history menue scroll up

Hier nun geht's an den Datenbestand selbst - hier werden Manipulationen an Art und Umfang der Entitytypen vorgenommen, wenn Schlüsselkonzepte sowie Zugriffsrechte in den Datenstrukturen dies zulassen

Tabellenerstellungsabfragen
Löschabfragen
Anfügeabfragen
Aktualisierungsabfragen


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost im Mai 2004

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist