Wie bei Abfragen vorgehen als Anfänger?

Anfaenger

Neuer Benutzer
Beiträge
1
Hallo liebe Community,
ich bin in der Oberstufe und mache mein Abitur mit dem Schwerpunkt Informatik. Ich schreibe nächste Woche meine Vorabi Klausur über das Thema "Abfragen" und bin völlig verzweifelt. Mir fällt es schwer diese zu lösen und ich brauche immer viel zu lange dafür. Die Funktionen an sich sind mir klar, aber anhand der Aufgabenstellung zu erkennen was ich alles benötige ist schwierig für mich. Ich habe mir einige Übungsaufgaben aus dem Internet rausgesucht, welche den Aufgaben die wir im Unterricht bearbeiten, ähneln. Wie sollte man bei solchen Abfragen vorgehen?

Aufgabe 1:
Datenbank: Datenbanken und SQL: Erster Datenbankzugriff

1. Schreiben Sie einen Select-Befehl, der aus der Relation Personal die Namen aller Personen ermittelt, die mehr als 3000 Euro verdienen.
2. Geben Sie mittels eines Select-Befehls die Gesamtanzahl der für Aufträge reservierten Artikel aus.
3. Geben Sie mittels eines Select-Befehls alle Artikel der Relation Lager aus, dessen Bestand abzüglich des Mindestbestands und der Reservierungen unter den Wert 3 gesunken ist. Als Ausgabe werden Artikelnummer und Artikelbezeichnung erwartet.
4. Aus wie vielen Einzelteilen bestehen alle zusammengesetzten Artikel? Bestimmen Sie diese Stückzahlen mittels eines Select-Befehls. Falls ein Einzelteil wieder aus noch kleineren Einzelteilen besteht, so ist dies nicht weiter zu berücksichtigen. Ausschlaggebend zur Ermittlung der Anzahl der Einzelteile ist das Attribut Anzahl ohne Rücksichtnahme auf die Einheit (‚ST‘ oder ‚CM‘).
5. Geben Sie alle Artikel aus, die vom Auftrag mit der Auftragsnummer 2 reserviert sind. Geben Sie dazu zu jedem Artikel die Artikelnummer, die Artikelbezeichnung und die Anzahl der für diesen Auftrag reservierten Artikel aus.
6. Geben Sie zu allen Mitarbeitern (Persnr, Name) die Gesamtumsatzsumme der von ihnen betreuten Aufträge ist.
7. Erzeugen Sie in der Datenbank Bike eine Abfrage, die der Relation Personal ohne die Attribute Gehalt und Beurteilung entspricht. Weiter sind in dieser Sicht nur die Personen aufzunehmen, denen ein Vorgesetzter zugeordnet ist.
8. Die Relation Auftragsposten enthält aus Redundanzgründen nur den Gesamtpreis jedes einzelnen Auftragspostens. Schreiben Sie daher eine Abfrage, die alle Daten der Relation Auftragsposten enthält und zusätzlich ein Attribut Einzelpreis
9. Erstellen Sie eine Liste der Vorgesetzten und die Anzahl der Mitarbeiter.
10. Wie viele Aufträge wurden in den Monaten des Jahres 2019 registriert?
11. Wie viel Umsatz wurde in den Monaten des Jahres 2019 gemacht?
12. Es soll ermittelt werden, ob die Teilestruktur richtig berechnet wurden. Hierzu soll eine Abfrage erstellt werden, die die Einzelteile aufsummiert und mit dem Gesamtpreis vergleicht je Artikel, der vorkommt.
13. Bei welchen Artikeln ist die Mage (Netto-Verkaufspreis im Verhältnis zum NettoEinkaufspreis) kleiner als 10 %.
 
Werbung:
Hallo
Was heißt denn wie sollte man da vorgehen? Wenn dir die Funktionen wie du sagst klar sind ist das doch ein Kinderspiel. In der Aufgabenstellung steht doch genau beschrieben was gefordert wird. Wenn du viel zu lange dafür brauchst ist das ein Zeichen dafür das du es nicht verstanden hast und mehr üben solltest... :)

Gruß,
Mike
 
Werbung:
Tja, gute Frage

Viele der Fragen sind im Prinzip verständlich, aber keine ist ohne Kenntnis des Datenmodells zu beantworten.

Ich würde mich anhand der Fragenliste zunächst selbst fragen, sind alle Begriffe dort für Dich klar?

Dann ein paar Grundlagen zu Abfragen (nur mal so grob runter):
- die Fragen oben betreffen offenbar nur Select Queries, also Datenabfrage, nicht Datenmanipulation
- einfache Select bestehen aus 4 Bereichen,
  • select clause,
  • die from clause, also Datenquelle(n),
  • Join der Datenquellen(wenn mehrere vorhanden) und
  • Filterkriterien per where clause
- Aggregate Abfragen sind wie einfache Selects, zählen/ summieren/ .. (aggregieren) aber Datenteile mittels Aggregatfunktionen und Gruppierung der übrigen Ausgabefelder, das Ergebnis davon kann separat gefiltert werden durch die having clause.
- komplexe Select sind beliebig verschachtelte Varianten der beiden vorigen Varianten
- (es gibt noch mehr, aber das ist wahrscheinlich nicht gleich Schulstoff)

So, was jetzt geschehen muss, um die Fragen umzusetzen. Jedes Wort der Frage musst Du in einen der oben genannten Bereiche verorten und umsetzen. Ich mach mal ein Beispiel ohne Kenntnis des Datenmodells:
2. Geben Sie mittels eines Select-Befehls die Gesamtanzahl der für Aufträge reservierten Artikel aus.
"mittels Select" (Select Clause):
Code:
Select
"die Gesamtzahl" (Aggregat Zählen):
Code:
count(*)[/count]
"der für Aufträge" (Datenquelle): [code]from auftrag[/count]
"der .. reservierten Artikel" (Filterkriterium): [count] where reserviert = true[/count]

ergibt:
[code]Select count(*) from auftrag
  where reserviert = true[/count]
Sieht nicht schlecht aus, ist aber sicher falsch. Jetzt muss ich etwas fantasieren ohne Datenmodell, Du nicht, Du hast es ja passend zur Aufgabenstellung.
"reserviert" wird in der Form nicht in der Tabelle auftrag stehen, sondern in einer weiteren Tabelle, sagen wir auftragsposition, die alle Artikel des Auftrags mit Bestellmenge aufführt. Vielleicht steht das Feld "reserviert" nirgends, sondern ist ein möglicher Status der Tabelle auftrag. Erstmal egal.
man muss also die Datenquelle erweitern und die Schlüsselspalten kennen (Primary und Foreign Keys):
[code]from auftrag a join auftragsposition ap on a.auftrag_id = ap.auftrag_id[code]

ergibt:
[code]Select count(*) 
   from from auftrag a join auftragsposition ap on a.auftrag_id = ap.auftrag_id
  where a.status = 'reserviert'[/count]
Sieht besser aus, stimmt immer noch nicht. Ein Artikel kann mehrfach bestellt werden, es soll die Gesamtzahl der reservierten Artikel bestimmt werden. Die würde sich vermutlich in auftragsposition.menge befinden. Eine Zahl. Das wird die Aggregatfunktion ändern. Wir zählen nicht mehr Datensätze, wir summieren vorhandene Zahlen aus den Auftragspositionen. Damit wird count(*) zu sum(auftragsposition.menge).

Kannst Du bestimmt im SQL oben anpassen ...

Ok, das ist ein Beispiel für eine Vorgehensweise. Mein Beispiel wird sicher nicht 100 % funktionieren, das kommt aufs Datenmodell an.
Wichtig ist das Vorgehen und dass Du die SQL Funktionalitäten klar hast, um sie einer umgangssprachlich formulierten Aufgabe zuzuordnen.

So, zuletzt habe ich gesehen, dass "..erster Datenbankzugriff" ein Link auf ein Modell ist. Hab ich nicht berücksichtigt, aber klärt einen weiteren wichtigen Punkt. Du musst das Datenmodell natürlich verstehen, sei es ein Bild/Diagramm oder DDL Statements. Dir muss klar sein, was genau das Modell an Strukturvorgaben liefert, Du musst die Symbolik/Notation verstehen. Also aus dem Diagramm müsstest Du Tabellen erstellen können (Create Table Statements, also DDL) und mit Daten befüllen können (Insert Statements, also DML). Oder umgekehrt, aus den Tabellen ein Diagramm erstellen können. Wenn Dir da irgendwas fehlt, musst Du das nacharbeiten. 

Ich habe nicht viele Fachwörter benutzt, aber in meinem Text solltest Du auch jedes Wort verstehen. Jedes Missverständnis macht es schwierig, eine Textaufgabe richtig umzusetzen.
 
Zurück
Oben