You are not logged in.

radicarl

Junior Schreiberling

  • "radicarl" is male
  • "radicarl" started this thread

Posts: 243

Date of registration: Oct 7th 2003

Location: H-Town

1

Saturday, April 30th 2005, 1:04pm

SQL Übung 4

Ich komm mit 1d nicht zurecht. Der Hinweis auf dem Zettel hat mir nicht weitergeholfen und ich habs dann mit zwei subqueries gelöst, problem ist dann allerdings das der ne ewigkeit braucht um mir die Daten zu liefern. Wenn ich das auf die ganze tabelle anwenden würde, bräuchte der ne Stunde, und das kann ja nicht sein.
Hat jemand vielleicht nochmal nen Tipp oder kann mir wer sagen wie der vorgeschlagene Join aussieht?
Ich versucht das so zu lösen:
(part Join movie ..) Join (part Join movie), nur musste da ja noch irgendwo der Name rein damit ich die spalten anpsrechen kann, und daran bin ich gescheitert.

Prof_NARF

Trainee

Posts: 72

Date of registration: Nov 18th 2002

2

Sunday, May 1st 2005, 9:35pm

RE: SQL Übung 4

Quoted

Original von radicarl
...
Ich versucht das so zu lösen:
(part Join movie ..) Join (part Join movie), nur musste da ja noch irgendwo der Name rein damit ich die spalten anpsrechen kann, und daran bin ich gescheitert.


könnte es vielleicht daran liegen, dass du zweimal mit PART anstatt mit PRED joinst? so einen ähnlichen fehler habe ich auch am anfang gemacht. ich hab einfach mal ne neue PART tabelle angelegt ;)
Hier könnt ihr was über die Hommingberger Gepardenforelle erfahren: :D

radicarl

Junior Schreiberling

  • "radicarl" is male
  • "radicarl" started this thread

Posts: 243

Date of registration: Oct 7th 2003

Location: H-Town

3

Sunday, May 1st 2005, 10:47pm

ne war natürlich pred, beide male

Benjamin

Segelnder Alter Hase

  • "Benjamin" is male

Posts: 3,827

Date of registration: Oct 1st 2002

Location: Region Hannover

Occupation: Alumni

4

Monday, May 2nd 2005, 12:49pm

Hat sich zufälliig schon einmal jemand erklären lassen, warum describe movie in Squiggle und und in iSQL*Plus verschiedene Ergebnisse anzeigen?
Haben die 22 und 7 irgendeinen festen Bezug oder is da irgendwo was so wie es nicht sein sollt..

Squiggle:
MOVIE | NOT NULL | NUMBER | 22 |

iSQL*PLus:
MOVIE | NOT NULL | NUMBER(7)

Für alle 7-stelligen Zahlen brauch man 24 bit, also kann es das auch nicht sein.
Es gibt nur eine bessere Sache als auf dem Wasser zu sein: Noch mehr auf dem Wasser sein.

mDev

Erfahrener Schreiberling

  • "mDev" is male

Posts: 282

Date of registration: Oct 10th 2002

Location: Hannover

Occupation: Wissenschaftlicher Mitarbeiter

5

Monday, May 2nd 2005, 6:41pm

zu g)
wie kann ich denn das einfügen eines bestimmten wertes mit einer bedingung verknüpfen (ausser not null natürlich)?

edit: die möglichkeit eines CASE-konstrukts war mir glatt entfallen...

This post has been edited 1 times, last edit by "mDev" (May 2nd 2005, 8:49pm)


6oeser6u6e

Junior Schreiberling

  • "6oeser6u6e" is male

Posts: 217

Date of registration: Mar 10th 2004

Location: Wolfsburg; Wohnort: Hannover-Nordstadt

Occupation: um Abstand zu der dämlichen Masse zu gewinnen... naja und wegen Geld ;P

6

Wednesday, May 4th 2005, 5:09pm

hi,
son tipp zu d) (ausser dem auf dem übungsblatt) wär mal ganz nett, bekomm hier echt die krise...
Ich bekomm es zwar hin die Jahre den jeweiligen vorgängern zuzuordnen, aber ich hab keinen plan wie ich jetzt die mit dem kleineren jahr auswählen soll...
ich habs bis jetzt immer mit sowas wie:

year < MAX(year)

probiert, bekomme dann aber immer die meldung "Keine GROUP BY Funktion"
habe aber alle spalten in die GROUP BY zeile geschrieben und HAVING benutzt... was mach ich falsch???

Achja und was der self-join bringen soll weiß ich auch nicht... würde vielleicht schon helfen wenn mir das jemand erklären würde

danke
Unwissenheit ist ein Segen

This post has been edited 1 times, last edit by "6oeser6u6e" (May 4th 2005, 5:12pm)


Sinan

Senior Schreiberling

  • "Sinan" is male

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

7

Wednesday, May 4th 2005, 7:22pm

hallo alle zusammen
habe paar Fragen, wenn nett wenn ihr mir paar Tips gibt,
a)
Damit die Filme auch aus PRED gelöscht, wenn sie aus MOVIE gelöscht werden, sollte man ON DELETE CASCADE benutzen vermute ich mal.
da kiege ich aber eine Fehlermeldung "unvalid identifier"
wie benutzt man dieses Constraint überhaupt??
hab kein Beispiel auf der Folie gefunden!

Und wie kann ich der Standardwert der mitwirkenden Personen auf 1 Setzen? und wann? wenn diese unbekannt ist?

e) zum BAHNHOF muss ich in Kröpke umsteigen ?(
was heißt mit gleicher Movie-Nummer, vomie ist doch ein Schlüssel,
wie kann es zwei Zeilen mit gleicher Movie-Nummer geben??????

d) habe ich ohne joins mit nur einer Unteranfrage hingekriegt,
und bin mir ziemlich sicher dass es richtig ist
(Stichwort: SELECT MIN(year))
es bleiben danach 4903 Zeilen in der Tabelle
hat jemand das gleiche?
With great power comes great responsibility

This post has been edited 2 times, last edit by "Sinan" (May 4th 2005, 7:26pm)


kritop

Junior Schreiberling

  • "kritop" is male

Posts: 223

Date of registration: Sep 22nd 2003

Location: Bochum

8

Wednesday, May 4th 2005, 7:26pm

@Sinan
a)
people NUMBER(4) DEFAULT 1

CONSTRAINT pred_mov_fk FOREIGN KEY (movie) REFERENCES movie(movie) ON DELETE CASCADE
Wer es gelernt hat, sich von der Herrschaft des Ärgers zu befreien, wird das Leben viel lebenswerter finden. Bertrand Russel

mDev

Erfahrener Schreiberling

  • "mDev" is male

Posts: 282

Date of registration: Oct 10th 2002

Location: Hannover

Occupation: Wissenschaftlicher Mitarbeiter

9

Wednesday, May 4th 2005, 8:03pm

Quoted

Original von 6oeser6u6e
hi,
son tipp zu d) (ausser dem auf dem übungsblatt) wär mal ganz nett, bekomm hier echt die krise...
Ich bekomm es zwar hin die Jahre den jeweiligen vorgängern zuzuordnen, aber ich hab keinen plan wie ich jetzt die mit dem kleineren jahr auswählen soll...
ich habs bis jetzt immer mit sowas wie:

year < MAX(year)

probiert, bekomme dann aber immer die meldung "Keine GROUP BY Funktion"
habe aber alle spalten in die GROUP BY zeile geschrieben und HAVING benutzt... was mach ich falsch???

Achja und was der self-join bringen soll weiß ich auch nicht... würde vielleicht schon helfen wenn mir das jemand erklären würde

danke


also...
du joinst pred.pred mit movie, dann pred.movie(1) mit pred.movie(2), damit hast du dann alle möglichen nachfolger-kombinationen zu den filmen! und jetzt nochmal pred.pred(2) mit movie joinen, dann kannst du die jahre beider vorgängerfilme vergleichen um zu schauen welcher jünger ist!

Sinan

Senior Schreiberling

  • "Sinan" is male

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

10

Wednesday, May 4th 2005, 8:08pm

Quoted

Original von kritop
@Sinan
CONSTRAINT pred_mov_fk FOREIGN KEY (movie) REFERENCES movie(movie) ON DELETE CASCADE

jawohl, danke schön :)
ich hatte das als zwei constraints geschrieben, deshalb hat nicht funktioniert.
noch eine Frage dazu,
ist diese Zeile als Table-level constaint äquivalent zu

CONSTRAINT pred_movie_fk REFERENCES MOVIE(movie) ON DELETE CASCADE

als Coulmn-level Constaint ?
With great power comes great responsibility

Sinan

Senior Schreiberling

  • "Sinan" is male

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

11

Wednesday, May 4th 2005, 9:56pm

und noch eine Frage zu g)

als Fallunterscheidung habe ich mir folgendes ausgedacht

DECODE(year, < 1950, 1950,
year, null, 1950,
year)

ist der Vergleich mit < an dieser Stelle erlaubt?
wenn nicht, welche Möglichkeiten gibt's noch?
With great power comes great responsibility

3St@n

Junior Schreiberling

  • "3St@n" is male

Posts: 204

Date of registration: Aug 31st 2003

Location: Hildesheim

Occupation: FG SE

12

Wednesday, May 4th 2005, 10:19pm

@ Sinan. Wie oben schon erwähnt kann man das mit CASE machen.

Syntax ist etwa:

CASE
WHEN [Bedingung1] THEN [Argument1]
WHEN [Bedingung2] THEN [Argument2]
[ELSE...]
END

Hatten wir leider nicht in der Vorlesung dran. Hab aber auch keinen anderen Weg gefunden.


Eine Frage. Könnte hier mal jemand posten der sich seiner Ergebnisse sicher ist wie viele Zeilen bei den einzelnen Anfragen behandelt worden sind.
Ich habe das Problem das ich ne ganze Menge rauslösche, allerdings immernoch beim Einfügen ein Problem mitm Primary Key habe, weil 833 Zeilen die ich Einfügen will schon vorkommen.

This post has been edited 1 times, last edit by "3St@n" (May 4th 2005, 10:20pm)


Sinan

Senior Schreiberling

  • "Sinan" is male

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

13

Wednesday, May 4th 2005, 10:48pm

Quoted

Original von 3St@n
CASE
WHEN [Bedingung1] THEN [Argument1]
WHEN [Bedingung2] THEN [Argument2]
[ELSE...]
END

ist DECODE nicht nur eine andere Schreibweise?
allerdings wenn ich jetzt
CASE year WHEN < 1950 THEN 1950 eingebe
krieg ich " missing expression"
und bei
CASE year WHEN year < 1950 THEN 1950
"missing keyword" :rolleyes:


Zu den Zahlen:
ich habe bei
c) 34112 rows created
d) 29209 rows deleted
With great power comes great responsibility

mDev

Erfahrener Schreiberling

  • "mDev" is male

Posts: 282

Date of registration: Oct 10th 2002

Location: Hannover

Occupation: Wissenschaftlicher Mitarbeiter

14

Wednesday, May 4th 2005, 10:57pm

CASE WHEN year < 1950 THEN 1950 END

3St@n

Junior Schreiberling

  • "3St@n" is male

Posts: 204

Date of registration: Aug 31st 2003

Location: Hildesheim

Occupation: FG SE

15

Wednesday, May 4th 2005, 11:03pm

DECODE ist nicht ne andere Schreibweise sondern ne Spezialisierung von CASE.


Ich habe bei
c) 16419 Zeilen eingefügt
d) 10709 Zeilen gelöscht
e) mehrere Möglichkeiten (1117, ca. 2000, ca. 2500 Zeilen gelöscht)

mDev

Erfahrener Schreiberling

  • "mDev" is male

Posts: 282

Date of registration: Oct 10th 2002

Location: Hannover

Occupation: Wissenschaftlicher Mitarbeiter

16

Thursday, May 5th 2005, 10:01am

Quoted

Original von 3St@n
DECODE ist nicht ne andere Schreibweise sondern ne Spezialisierung von CASE.


Ich habe bei
c) 16419 Zeilen eingefügt
d) 10709 Zeilen gelöscht
e) mehrere Möglichkeiten (1117, ca. 2000, ca. 2500 Zeilen gelöscht)


hab ich auch alles (1117 bei e)

Prof_NARF

Trainee

Posts: 72

Date of registration: Nov 18th 2002

17

Thursday, May 5th 2005, 12:03pm

Ich habe bei
c) 16419 Zeilen eingefügt
d) 10709 Zeilen gelöscht
e) 1117 Zeilen gelöscht
g) 2519 Zeilen eingefügt ???
i) 7112 Zeilen geändert ?

Wobei ich mir bei g) nicht sicher bin ob ich die Fragestellung überhaupt richtig verstanden habe. Welche Filme müssen denn jetzt noch hinzugefügt werden? Ich habe alle Filme eingefügt, die in PRED.pred stehen, aber noch nicht in PRED.movie vorkommen. Ich hab mir das aus der Einleitung des Aufgabenblattes zusammengereimt, weil ich die Frage 1g) nicht wirklich aussagekräftig in der Hinsicht finde. "Fügen Sie zu PRED alle Vorgängerfilme hinzu, die noch nicht bereits in PRED vorhanden sind. ??????? Könnte auch ne MEGA-Anfrage gemeint sein, die alle Aufgabenteile auf einmal erschlägt ;)

Achja, wenn mir jmd. zu h) einen Tipp geben könnte, wäre ich sehr dankbar. Kann man so viele Bedingungen mit nur einem Constraint erschlagen?

mfg
Prof_NARF
Hier könnt ihr was über die Hommingberger Gepardenforelle erfahren: :D

Leif

Junior Schreiberling

  • "Leif" is male

Posts: 128

Date of registration: Oct 9th 2002

Location: Hannover

Occupation: Design and Research Team Lead at Automattic, ex-FGSE WiMi

18

Thursday, May 5th 2005, 1:08pm

Ich raff's nicht. Bei c) komme ich auf ueber 60.000 Rows. Habe ich irgendwas wahnsinnig missverstanden? Ich hole mir aus LINK alle Eintraege, die als link 'follows' haben und joine das mit movie, um nur Kinofilme sowie die Titel und alles zu bekommen. Was koennte ich falsch machen?

PS: Ich joine an movie1 - wenn ich an movie2 joine bekomme ich etwa 61.000 ...

This post has been edited 1 times, last edit by "Leif" (May 5th 2005, 1:09pm)


Sinan

Senior Schreiberling

  • "Sinan" is male

Posts: 1,021

Date of registration: Jul 5th 2003

Location: Malaga

Occupation: Senior Cloud Solution Engineer bei Oracle

19

Thursday, May 5th 2005, 1:59pm

Quoted

Original von toco
PS: Ich joine an movie1 - ..

ja das ist richtig,
ich hatte vergessen, type='cinema' zu schreiben,
deshalb kamen bei mir mehr Zeilen,
jetzt habe ich c und d wie 3St@n und mDev

Aber e) versteh ich überhaupt nicht,
Beispiel
movie | pred
| 137132 | 137133 |
| 137132 | 128925 |
| 131826 | 411381 |
| 130174 | 62306 |
| 124425 | 124427 |
| 108903 | 108902 |
| 108899 | 185633 |
| 105969 | 208623 |
| 105969 | 188020 |
| 105969 | 124768 |
| 105969 | 99925 |
| 101019 | 223063 |
| 101019 | 177033 |

was soll nun gelöscht werden, was soll bleiben ?(
With great power comes great responsibility

iriania

Junior Schreiberling

  • "iriania" is female

Posts: 222

Date of registration: Nov 24th 2003

Location: Waqwaq

Occupation: Wie? Ich studiere? seit wann denn?

20

Thursday, May 5th 2005, 2:00pm

in Aufgabe 1d, wie soll man ausdrücken, dass alle preds ausser dem mit dem grössten jahr gelöscht werden sollen? mit dem selfjoin habe ich erreichen können, dass der pred mit dem maximalen jahr angezeigt wird, aber ich weiss nicht, wie ich ausdrücken soll, dass alle anderen ausgewählt werden sollen? mit GROUP habe ich es auch versucht, es geht aber nicht , denn HAVING m1.year < MAX(m2.year) ergibt eine Fehlermeldung (Not a group by - function)
...und sie dreht sich doch!