Zum Inhalt springen

Probleme mit Datenbank abfragen


Harry05

Empfohlene Beiträge

Aloha läute,

ich habe probleme mit Datenbanken also ich komm ihrgend wie nicht über den Tellerrand bzw. ich stecke fest hab mich fest gefahren, so wie ein Kolbenfresser. Fühle mich auch wie in einer while schleife die Statisch auf true gesetzt ist, also eine dauerschleife.

Denn ich möchte und versuche es zu verstehen.

Meine probleme sind

  1. right/left joins
  2. subselect
  3. group by .... mit having

Muss auch sagen das ich mir Sql abfragen nahe zu selbst beibringen musste, wie auch immer.

benutzte Hilfen

http://amazing-sql.com/download/

http://www.schulserver.hessen.de/darmstadt/lichtenberg/SQLTutorial/home.html

nur diese kenne ich auswendig und fühle mich als würde ich mich selber verarschen. Mir ist das nich ganz ins Blut rübergegangen,

ich weis nicht ganz wie die setzt zudeuten sind die Joins und subselect andeuten.

Bearbeitet von Harry05
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich fand http://sqlzoo.net noch nett, ist aber im Endeffekt das gleiche in grün.

Ich kann mich nicht daran erinnern, dass in einer IHK-Prüfung schonmal explizit mit right/left joins gearbeitet werden musste - kann mich da aber täuschen. 

Subselects sind eigentlich recht einfach - die brauchst du immer dann, wenn die Kriterien einer "WHERE"-Bedingung noch spezialisiert werden müssen.

"Having ist das Where des Group-By" macht Having eigentlich relativ deutlich.

Allgemein zu SQL: Manchmal bringt die IHK da ganz einfach Aufgaben dran, die recht schwer sind. Z.B. bei uns in der Prüfung kam eine Aufgabe dran, bei der laut Musterlösung 4 geschachtelte Subselects zu verwenden waren. Finde ich ja etwas übertrieben solch eine Aufgabe auf dem Papier zu lösen, aber naja.

Ansonsten gibt's halt bei SQL relativ einfach Teilpunkte dafür, dass man allein schon die richtigen Spalten hinter das SELECT schreibt.

Bearbeitet von Fauch
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Fauch:

Ich kann mich nicht daran erinnern, dass in einer IHK-Prüfung schonmal explizit mit right/left joins gearbeitet werden musste - kann mich da aber täuschen. 

 

Da kann ich widersprechen. Es gab schon mehrere Aufgaben, die ein LEFT OUTER JOIN erforderten. In einem Beispiel sollten u.a. Ferienhäuser mit ihren Kundenbuchungen ermittelt werden und es gab auch Häuser ohne Buchungen.
 

vor einer Stunde schrieb Fauch:

Ansonsten gibt's halt bei SQL relativ einfach Teilpunkte dafür, dass man allein schon die richtigen Spalten hinter das SELECT schreibt.

 

Das kann ich bestätigen! Bei vielen Aufgaben gibt es die Hälfte der Punkte schon für ein "Auflisten" der Spalten und Tabellen. Also unbedingt immer hinschreiben, auch wenn man den Rest der Aufgabe vielleicht nicht lösen kann!

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 31 Minuten schrieb stefan.macke:

Da kann ich widersprechen. Es gab schon mehrere Aufgaben, die ein LEFT OUTER JOIN erforderten. In einem Beispiel sollten u.a. Ferienhäuser mit ihren Kundenbuchungen ermittelt werden und es gab auch Häuser ohne Buchungen.

Gilt das hier für FIAEler? Oder auch in den ganzheitlichen Aufgaben für FISIs und FIAEs?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Mackenzie:

Gilt das hier für FIAEler? Oder auch in den ganzheitlichen Aufgaben für FISIs und FIAEs?

Meistens sind die SQL-Aufgaben aus der GA2 (dem was die beiden Berufe gemeinsam haben) deutlich einfacher. Hier ist sogar öfters schon ein join das höchste der Gefühle. 

Garantien gibt's aber keine.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich mal einen Knoten im Kopf habe, dann nehme ich mir immer dieses Bild als Hilfe:

Visual_SQL_JOINS_orig.jpg

Das Zeigt, welche Menge man bei welchem Join bekommt.

Ein Right Join benutzt man eigentlich auch recht selten. Am häufigsten sind die Inner und Left Joins. Ich selber entwickle ja auch seit fünf Jahren Stored Procedures mit PL/SQL (Eine Sprache von Oracle) und kann mich nicht daran erinnern, jemals ein Right Join gemacht zu haben. Ich versuche es immer mit einem Left Join abzubilden, weil es dann leichter zu verstehen ist. Man bildet eine Grundmenge und schränkt diese Menge mit einem Left oder Inner Join ein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Fauch:

Meistens sind die SQL-Aufgaben aus der GA2 (dem was die beiden Berufe gemeinsam haben) deutlich einfacher. Hier ist sogar öfters schon ein join das höchste der Gefühle.

 

Das stimmt. Dafür kommen aber öfter mal andere Abfragen wie UPDATE oder CREATE TABLE dran anstatt "schwierige" SELECTs.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Whiz-zarD:

Wenn ich mal einen Knoten im Kopf habe, dann nehme ich mir immer dieses Bild als Hilfe:

Visual_SQL_JOINS_orig.jpg

Das Zeigt, welche Menge man bei welchem Join bekommt.

Ein Right Join benutzt man eigentlich auch recht selten. Am häufigsten sind die Inner und Left Joins. Ich selber entwickle ja auch seit fünf Jahren Stored Procedures mit PL/SQL (Eine Sprache von Oracle) und kann mich nicht daran erinnern, jemals ein Right Join gemacht zu haben. Ich versuche es immer mit einem Left Join abzubilden, weil es dann leichter zu verstehen ist. Man bildet eine Grundmenge und schränkt diese Menge mit einem Left oder Inner Join ein.

ist left join nicht das selbe wie right join ? wichtig ist wie tabellen angeordnet sind ?? z.b  a left b oder b right a komm nicht das gleiche raus ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb Harry05:

 z.b  a left b oder b right a komm nicht das gleiche raus ??

Nein.

A LEFT OUTER JOIN B -> alle Sätze aus A und verknüpfte Sätze aus B, falls vorhanden. Falls kein passender Satz in B vorhanden ist, werden NULL-Werte für die Spalten geliefert.

A RIGHT OUTER JOIN B -> alle Sätze aus B und verknüpfte Sätze aus A, falls vorhanden, ansonsten NULL-Werte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb Fauch:

Fairerweise muss man hierzu aber noch anmerken, dass ein Blatt mit der Syntax der Prüfung beigelegt ist.

Darauf würde ich mich als Prüfling nicht verlassen. SQL ist so wichtig, dass man es einfach können muss. Und es stehen auch nicht immer alle benötigten Befehle auf dem Beiblatt. Zumindest in GA1 für FIAE gab es schon mehrfach Aufgaben, die nicht nur mit der Befehlsreferenz lösbar waren. Es waren z.B. UNION oder ANY nicht angegeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 54 Minuten schrieb stefan.macke:

Nein.

A LEFT OUTER JOIN B -> alle Sätze aus A und verknüpfte Sätze aus B, falls vorhanden. Falls kein passender Satz in B vorhanden ist, werden NULL-Werte für die Spalten geliefert.

A RIGHT OUTER JOIN B -> alle Sätze aus B und verknüpfte Sätze aus A, falls vorhanden, ansonsten NULL-Werte.

Er fragte aber ob, A LEFT OUTER JOIN B nicht das selbe ist, wie B RIGHT OUTER JOIN A und ja, das ist das selbe. In beiden Fällen ist die Grundmenge A. Darum versuche ich immer als erstes die Grundmenge zu schreiben, bevor ich die Menge mit einem LEFT OUTER JOIN filtere. Das lässt sich semantisch besser lesen.

Aber die Frage, ob LEFT OUTER JOIN nicht das selbe ist, wie RIGHT OUTER JOIN muss mit einem Nein beantwortet werden. Es kommt hier auf die Reihenfolge an, wie die Mengen zueinander stehen.

Bearbeitet von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Stunden schrieb Whiz-zarD:

Er fragte aber ob, A LEFT OUTER JOIN B nicht das selbe ist, wie B RIGHT OUTER JOIN A und ja, das ist das selbe. In beiden Fällen ist die Grundmenge A. Darum versuche ich immer als erstes die Grundmenge zu schreiben, bevor ich die Menge mit einem LEFT OUTER JOIN filtere. Das lässt sich semantisch besser lesen.

Aber die Frage, ob LEFT OUTER JOIN nicht das selbe ist, wie RIGHT OUTER JOIN muss mit einem Nein beantwortet werden. Es kommt hier auf die Reihenfolge an, wie die Mengen zueinander stehen.

SOOOOO Meinte ich das !!!

ok man muss achten an welcher stelle die Tabellen sind. Wie erschliest sich den das aus dem aufgaben Text den nun??

gib es identifizierungs wörter wie Z.b bei GROUB BY (je oder pro [nicht immer 100%])?

also (grundmenge  Immer A ) left B ???

aus Amasing Sql -> Welche Studenten haben bisher noch keine Prüfung abgelegt? Gebe deren ID, Vorname und Nachname in der angegebene Reihenfolge an.

Antwort -> SELECT id, vorname, nachname FROM  studenten LEFT JOIN pruefungen ON studenten.id = pruefungen.student WHERE pruefungen.student IS NULL;

---------------------------------------------------------------------------------

aus Amasing Sql ->Von welchen Vorlesungen sind bisher noch keine Prüfungen abgelegt worden? Gebe die ID und den Titel der Vorlesungen in der angegebenen Reihenfolge aus.

Antwort -> SELECT id, titel FROM vorlesungen LEFT JOIN pruefungen ON vorlesungen.id = pruefungen.vorlesung WHERE pruefungen.vorlesung IS NULL;

----------------------------------------------------------------------------------------

aus Amasing Sql ->Welche Studenten hören welche Vorlesungen? Gebe bitte die Vornamen als 'Vorname', die Nachnamen als 'Nachname' und die Vorlesungs-ID als 'Vorlesungs_ID' aus. Sortiere das Ergebnis aufsteigend nach der Vorlesungs-ID. Erfasse auch diejenigen Studenten welche gegenwärtig keine Vorlesungen hören.

Antwort ->SELECT studenten.vorname, studenten.nachname, hoeren.vorlesung AS vorlesungs_id FROM hoeren RIGHT JOIN studenten ON studenten.id = hoeren.student ORDER BY vorlesungs_id;

data_model_erm.png

data_model_tables.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...