SQL- Anweisung

Dr Franke Ghostwriter
SQL- Anweisung

Hallo,

die Wirtschaftsinformatik kostet mir noch den letzten Nerv. Bin wiedermals mit Aufgaben für die kommende Klausur beschäftigt und schon gelange ich an einige Verständnisprobleme.

z.B. EA WS 2005/06 Aufgabe 4

Ich gehe Schritt für Schritt vor und komme doch nicht weiter.

was?
woher?
mit welchen Eigenschaften?

Ja schön und gut, aber ich kann das mit unseren Kurseinheiten einfach nicht umsetzen.

Kann mir bitte jemand anhand der Beispiele der o. g. Aufgabe es so verdeutlichen, dass auch ich es verstehen kann.

Vielen Dank für eure Hilfe!!!!

René
 
Hab'mit dem SQL-Kram auch so meine Schwierigkeiten.
Und ich bin auch der Meinung, dass das Skript die Sachen nicht wirklich gut erklärt. Im Gegenteil fühle mich da ziemlich allein gelassen.
Habe diverse Male im Internet nach besseren Erklärungen gesucht, aber irgendwie verstehe ich es nicht.
 
Danke für deine hilfe...

also ich binmir halt super unsicher, was genau in diese WHERE-Zeile kommt.
also, dass bei SELECT die entsprechende Tabellenbezeichung nebst gesuchtem Feld kommt, das klingt noch logisch. Ebenso, dass in der FROm-Zeile die Tabellenbezeichung steht, aus der ich suche.
Klar, im Skript steht, dass bei WHERE die bedingung eingatregn wird. aber woher weiß ich welche Bedingungen ich angeben muss??
 
Hab' ne Aufgabe gefunden, die nun überhaupt nicht verstehe - hilfe!!

also ea ss203 id
nr. 4 b

frage: wie viele mitrarbeiter aus der filiale münchen meierplatz (filialnr.=55) verdienen genau das durchschnittsgehlat aller mitarbeiter?

ausschnitt aus datenmodell:
filiale (filialnr, regnr, bezeichnung, ort, umsatz)
miarbeiter (mitarbeiternr, filialnr, name, funktion, gehalt, ort)

die vorgegebene antwort:

SELECT mitarbeiter.mitarbeiternr
FROM mitarbeiter
WHERE mitarbeiter.filialnr=55
AND mitarbeiter.gehalt = (SELECT AVG (Gehalt) FROM mitarbeiter);

gemäß der Musterlösung ist die sql-anweisung falsch.
dass, sie falsch ist, darin stimme ich überein, nur wie die richtige anweisung lauten soll weiß ich nicht? (ich weiß ist nicht gefragt, aber die neugier will es wissen!)

ich denke mir so was in der art für den einstieg:
SELECT COUNT (mitarbeiter.mitarbeiternr)
AS anzahl
 
Jop, so würd ichs auch machen. Mit count wird quasie die anzahl datensätze ermittelt wo die filalnr 55 ist und das durchschnittsgehalt gezahlt wird.

.. das die filiale meierplatz id 55 ist war das im text gegeben? das heißt solltest du nach meierplatz suchen oder nach der filiale 55? oder hast du dir das aus der tabelle selbst zusammen gesucht? eventl müsstest du dann noch auf die zweite tabelle zugreifen um die bezeichnung herauszusuchen.

SELECT COUNT(mitarbeiter.mitarbeiternr) as Anzahl FROM Mitarbeiter, Filiale WHERE filiale.bezeichnung like 'München Meierplatz' AND Mitarbeiter.filialnr = Filiale.filialnr AND mitarbeiter.gehalt = (SELECT AVG(gehalt) FROM mitarbeiter);

mein gedankengang ist folgender:

SELECT COUNT (mitarbeiter.mitarbeiternr)
AS anzahl
FROM mitarbeiter
WHERE mitarbieter.filialnr = 55
AND mitarbeiter.gehalt = (SELECT AVG(gehalt) FROM mitarbeiter);
 
Schmetterling,

danke für deine schnelle Unterstützung.

Habe jetzt auch ein besseres Gefühl, obwohl ich noch etwas üben muss. 🙁

Gruß
René
__________________

geschafft: BWL II, EBWL/EVWL 😀

SoSe 07: Winfo, BWL I, BWL III 😕

WS 07/08: Recht, Mathe, Statistik :hmmm
 
Aufgabe 3 EA WS 06/07

Vielleicht brauch ich doch noch mal einen Denkanstoß!!! 😕😕😕

Sorry, aber ich glaube ich habe es immer noch nicht recht verstanden und somit habe ich mich entschlossen, die kpl. Aufgabe bis ins kleinste Detail auseinander zu nehmen, um endlich mein Verständnisproblem zu finden.

Soo...

3b) Welche Lieferanten haben Zweibecker Urquell bestellt?


Select Lieferant.LieferantName

Fragestellung für Select: Welche Spalten werden gesucht?

Wie unterscheide ich das denn in diesen Ausschnitten der Relationsmodelle?

Produkt = Tabelle

ProduktNr. = Spalte

From Lieferung,Lieferant, Produkt

Fragestellung für From: Aus welchen Spalten kommen die Daten?

Den Lieferantennamen erhalte ich doch ausschließlich von der Tabelle Lieferant.

Where Lieferung.ProduktNr. = Produkt.ProduktNr
AND Lieferung.LieferantNr = Lieferant.LieferantNr
AND Produkt.ProduktName = Zweibecker Urquell

Nach welchen Kriterien werden die Daten gesucht ?

Kann mir jemand das en diesem Beispiel verdeutlichen?

3c) Update Produkt
Set Preis = Preis * 1.03


3d) SelectSum (LagerplatzBestand)
From Lagerplatz, Produkt
Where Lagerplatz,ProduktNr. = Produkt.ProduktName
AND Produkt.Produkt.Name = Zweibecker Urquell

Wo ist der Fehler? Das ProdktNr nicht = Produkt Name


Es wäre sehr nett, wenn ihr mir eure Gedankengänge für die o.g. Beispiele mitteilen könntet. Ich habe die Skripte gelesen und dachte ich könnte die Aufgaben lösen aber das war wohl nichts.

Was bedeutet eigentlich AS und was hat es mit den Klammerdiskussionen auf sich?

Damit wäre mir sehr geholfen..
 
Aufgabe 3 EA WS 06/07

Vielleicht brauch ich doch noch mal einen Denkanstoß!!! 😕😕😕

Sorry, aber ich glaube ich habe es immer noch nicht recht verstanden und somit habe ich mich entschlossen, die kpl. Aufgabe bis ins kleinste Detail auseinander zu nehmen, um endlich mein Verständnisproblem zu finden.

Soo...

3b) Welche Lieferanten haben Zweibecker Urquell bestellt?


Select Lieferant.LieferantName

Fragestellung für Select: Welche Spalten werden gesucht?

Wie unterscheide ich das denn in diesen Ausschnitten der Relationsmodelle?

Produkt = Tabelle

ProduktNr. = Spalte

From Lieferung,Lieferant, Produkt

Fragestellung für From: Aus welchen Spalten kommen die Daten?

Den Lieferantennamen erhalte ich doch ausschließlich von der Tabelle Lieferant.

Where Lieferung.ProduktNr. = Produkt.ProduktNr
AND Lieferung.LieferantNr = Lieferant.LieferantNr
AND Produkt.ProduktName = Zweibecker Urquell

Nach welchen Kriterien werden die Daten gesucht ?

Kann mir jemand das en diesem Beispiel verdeutlichen?

3c) Update Produkt
Set Preis = Preis * 1.03


3d) SelectSum (LagerplatzBestand)
From Lagerplatz, Produkt
Where Lagerplatz,ProduktNr. = Produkt.ProduktName
AND Produkt.Produkt.Name = Zweibecker Urquell

Wo ist der Fehler? Das ProdktNr nicht = Produkt Name


Es wäre sehr nett, wenn ihr mir eure Gedankengänge für die o.g. Beispiele mitteilen könntet. Ich habe die Skripte gelesen und dachte ich könnte die Aufgaben lösen aber das war wohl nichts.

Was bedeutet eigentlich AS und was hat es mit den Klammerdiskussionen auf sich?

Damit wäre mir sehr geholfen..
 
René,

so ganz verstehe ich deine Fragen nicht 🙁. Ich versuchs mal mit einer Antwort 🙂.

3b) Welche Lieferanten haben Zweibecker Urquell bestellt?

Select Lieferant.LieferantName

Fragestellung für Select: Welche Spalten werden gesucht?

Wie unterscheide ich das denn in diesen Ausschnitten der Relationsmodelle?

Was meinst du mit der Frage? 😕 Du willst wissen welchen Lieferanten das eine Getränk bestellt haben. Der Lieferantenname wird nur in der Lieferantentabelle stehen. Was willst du da unterscheiden? 😕

From Lieferung,Lieferant, Produkt

Fragestellung für From: Aus welchen Spalten kommen die Daten?

Aus gar keinen Spalten. Hinter FROM stehen immer die Tabellen aus denen du die Daten die du benötigst zusammensuchst. Hier stehen keine Spalten!

Den Lieferantennamen erhalte ich doch ausschließlich von der Tabelle Lieferant.
Richtig. Aber in der Lieferantentabelle steht nicht, welches Produkt er bestellt hat und du willst NUR die Lieferanten die EIN BESTIMMTES Produkt bestellt haben.

Where Lieferung.ProduktNr. = Produkt.ProduktNr
AND Lieferung.LieferantNr = Lieferant.LieferantNr
AND Produkt.ProduktName = Zweibecker Urquell

Nach welchen Kriterien werden die Daten gesucht ?
Immer noch nach "Welcher Lieferanat hat Zweibecker Urquell" gesucht. Du musst die Where-Bedingung so gestalten dass du von der Lieferantentabelle zur Produkttabelle kommst. Der Zwischenschritt dazu führt dich über die Lieferung-Tabelle.

Wo ist der Fehler? Das ProdktNr nicht = Produkt Name
Ja. Es macht wenig Sinn '4711' mit 'Zweibecker Urquell' zu vergleiche, da kommt immer "falsch" zurück.

:winke
 
Graf Zahn,

ich hab in der Klausur nur eine Aussage als falsch markiert, welche hast du denn gefunden? Kann gut sein dass ich da froh war überhaupt was falsches gefunden zu haben und dann aufgehört hab, weiter zu schauen, weil das Diagramm schon mit einer falschen Aussage nicht zutrifft 😉 .
 
Naja, im Prinzip gibt es viele Fehlerquellen, nehmen wir zum Beispiel die Aufgabe d) von der ersten EA aus dem letzten Semester.

da ist die Fehlerquelle

Where Lagerplatz.ProduktNr = Produkt.Produktname

kann schonmal nicht richtig sein, weil eine Nummer keine Buchstaben enthalten kann.

Oder Aufgabe b3) aus der letzten Klausur, hier ist

AND Maler = 'Otto' falsch, da Police Maler nicht enthält.


Und bei der EA aus diesem Semester, wurde bei einer Aufgabe einfach eine Zeile weggelassen. Ich denke, wenn SQL drankommt, wird es auch nicht so schwer sein, den Fehler zu erkennen.
 
Ich habe mit SQL auch leider so meine Schwierigkeiten.Das ähnelt bei mir eher so an "raten"!(-:
Irgend ein Tipp wie man vielleicht vorgeht?
Wenn bei FROM dahinter z.B. Gerät, Kunde steht , müssen diese beiden Wörter unten auch in der WHERE Bedingung vorkommen,richtig?!
Eine doofe Frage hab ich noch: Die Unterstreichungen,...was haben die genau zu bedeuten?
 
Ich habe hier eine Aufgabe aus der Klausur 05/06

SQL Anweisung:
SELECT *
FROM Kunde, KundeKonto
WHERE Kunde.KundKonto>0
AND Name='KabelwerkeKG'
AND Kunde.Kundenummer=KundeKonto.Kundenummer

Scheint alles schön zu sein und in der Diskussion nach der KLausur als richtige Lösung von den meisten akzeptiert.
Mein Problem ist die 4. Zeile, wo nur Name ohne der dazugehörige Tabellenbezeichnug steht. Kann ich die Anweisung so schreiben - ohne Kunde.Name?
 
ich habe hier eine Aufgabe aus der Klausur 05/06

SQL Anweisung:
SELECT *
FROM Kunde, KundeKonto
WHERE Kunde.KundKonto>0
AND Name='KabelwerkeKG'
AND Kunde.Kundenummer=KundeKonto.Kundenummer

Scheint alles schön zu sein und in der Diskussion nach der KLausur als richtige Lösung von den meisten akzeptiert.
Mein Problem ist die 4. Zeile, wo nur Name ohne der dazugehörige Tabellenbezeichnug steht. Kann ich die Anweisung so schreiben - ohne Kunde.Name?

Wenn "Name" nur in einer der Tabellen als Spaltenname auftaucht dann solltest du es weglassen können. Es muss nur eindeutig sein, welche Spalte in welcher Tabelle gemeint ist.
 
Danke, Schmetterling, - ich bin immer bis jetzt davon ausgegangen, daß es unabhängig von dem Vorhandensein in einer oder zwei Tabellen ist. Eigentlich logisch gesehen - müsste man wenn - dann immer die dazugehörige Tabelle angeben. Weil Endbenutzer ja nich immer wissen kann, wie die Relationen in einer Datenbank aufgebaut sind...
 
Also wegen der sql abfragen noch mal ...

zwischen periode 10 und 30 wäre dann: <30 und >10
und bis zur Periode 100 wäre dann: <100

richtig oder? so hab ich mir das jetzt aus den lösungen abgeleitet 🙂 bei der zweiten geschichte mit dem bis zur periode bin ich mir nicht sicher ob es vielleicht doch <= ist ... kann mich da noch wer bestätigen das es so richtig ist?
 
Stimmt soweit, bei dem bis Periode 100 bin ich mir auch nicht so sicher, obwohl ich auch schonmal "bis einschließlich" gelesen habe, also sollte dass mit dem "bis Periode 100" < 100 sein.

Das sehe ich auch so. Bis 100 heißt < 100, oder auch "kleiner 100". "Kleiner gleich 100" oder "bis einschließlich" ist <= 100 🙂. Analog natürlich für größer oder "über 40" z.B. das ist > 40.
 
Ab 100 heißt inklusive für mich. Also ab da wenn die Periode Nr. 100 beginnt.

Aber das nicht als "der Weisheit letzter Schluss" verstehen. Nicht dass ihr mich für eure Klausurnoten verantwortlich macht. Ich interpretiere das eben so und hab festgestellt, dass ich umso verwirrter werde, je mehr Gedanken ich mir mache was es denn jetzt genau heißt.

Wünsche euch allen viel Erfolg heute 🙂 !
 
Noch eine Frage:
Produkt( ProduktNr. , Produktname, Preis)
Lagerplatz ( Lagerplatznr., Produktnr. , Lagerplatzbestand, Lagerplatzkapazität)

Sooo, und jetzt die Aufgabe:
Auszugeben ist die Gesamtmenge des derzeit eingelagerten Produktes "Zweibecker Urquell"

SELECT SUM (LagerplatzBestand)
FROM Lagerplatz,Produkt
WHERE Lagerplatz.Produktnr. = Produkt.Produktname
AND Produkt.Produktname= "Zwweibecker Urquell"

Meine Frage ist jetzt, muss man nicht neben SELECT SUM (Lagerplatzbestand) auch noch den Namen des produktes schreiben?(hier wäre das ja Zweibecker Urquell)
Oder ist das überflüssig?
Und warum ist die Anweisung falsch?
 
Der sql ist falsch weil Lagerplatz.Produktnr. = Produkt.Produktname funktioniert nicht !!! man kann keinen namen mit einer nr vergleichen -_- das hätte heißen müssen Lagerplatz.produktnr = produkt.produktnr 🙂

und beim sum kann man keine bedingung angeben, die bedingung kommt erst im where teil
 
Oben