Announcement

Collapse
No announcement yet.

SQL Anfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Anfragen

    KOMPONIST (KNR, NAME, VORNAME, GEBOREN, GESTORBEN)
    STUECK (SNR, KNR -> KOMPONIST, TITEL, TONART, OPUS)
    CD (CDNR, NAME, HERSTELLER, ANZ-CDS, GESAMTSPIELZEIT)
    AUFNAHME (CDNR->CD, SNR->STUECK, ORCHESTER, LEITUNG)
    SOLIST ((CDNR, SNR)->AUFNAHME, NAME, INSTRUMENT)

    Mit dieser Datenbank muss ich über 20 Anfragen erstellen. Die folgenden sind mir ein Rätsel. Hauptsächlich weil ich über mehrere Tabellen gehen muss.
    Bitte kann mir jemand helfen?

    1. Geben Sie alle CDs aus, die sowohl Stücke von Mozart als auch Stücke von
    Beethoven enthalten.

    2. Angenommen Sie möchten Arthur Grumiaux oder Pinchas Zukerman spielen
    hören (als Solisten). Welche Komponisten würden Sie dann hören? Geben Sie
    Vor- und Nachnamen der Komponisten aus.

    3. Geben Sie eine Liste aller Komponisten aus (sortiert nach Name und Vorname)
    und für jeden Komponisten entweder ’Y’ falls er mindestens ein Stück mit einer
    Opus-Nummer in der Datenbank hat, oder ’N’ sonst.


    ----------------------------------------------------------------------------------------------
    EMP (EMPNO, ENAME, JOB, MGR->EMP(EMPNO), HIREDATE, SAL, COMM, DEPTNO->DEPT)
    PersonalNr, Name, Tätigkeit, PersonalNr des Chefs, Einstellungsdatum, Gehalt, Provision, AbteilungsNr

    DEPT (DEPTNO, DNAME, LOC)
    AbteilungsNr, Abteilungsname, Ort

    Diese Datenbank würde mich nur aus Neugierde interessieren.

    1. Welche Angestellten (Name) sind zeitlich vor dem Chef (Angestellter, dessen
    mgr NULL ist) eingestellt worden?
    t
    2. Finden Sie alle Angestellten (Nummer, Name, Tätigkeit, Abteilungsnummer),
    die mindestens eine Person als Untergebenen haben (also die Chefs).


    Vielen Danke im Voraus

  • #2
    zu 1
    select * from cd
    where
    exists
    (select * from aufnahme,stueck, komponist where cd.cdnr=aufnahme.cdnr and aufnahme.snr=stueck.snr
    and stueck.knr=komponist.knr and komponist.name='Beethoven')
    and exists
    (select * from aufnahme,stueck, komponist where cd.cdnr=aufnahme.cdnr and aufnahme.snr=stueck.snr
    and stueck.knr=komponist.knr and komponist.name='Mozart')
    Zuletzt editiert von frauwue; 05.12.2007, 20:54.
    docendo discimus

    Comment


    • #3
      Danke für die schnelle Antwort. Er gibt mir da zwar keinen Fehler aus aber auch keine CD. Es ist aber genau eine CD drin auf die das zutrifft.

      Comment


      • #4
        zu 2

        select Distinct Komponist.vorname,Komponist.Nachname
        from Komponist,Stueck,Solist
        Where Komponist.knr=Stueck.knr
        and solist.snr=Stueck.snr
        And (solist.name ="Zukermann" OR solist.name ="Grumiaux")
        docendo discimus

        Comment


        • #5
          Hallo,

          vielleicht liegt das am Gleichheitszeichen bei Name. Schreib mal
          LIKE "%Beethoven%" usw..
          docendo discimus

          Comment


          • #6
            Gleiches Problem, genau wie bei Aufgabe 2. Diese Lösung hatte ich zB auch schon so ähnlich.

            Comment


            • #7
              Hast Du jetzt LIKE genommen ?
              docendo discimus

              Comment


              • #8
                Ja. like '%Beethoven%'

                Comment


                • #9
                  Kommt was raus, wenn Du

                  Select * from Komponist where name Like '%Beethoven%'

                  schreibst?
                  docendo discimus

                  Comment


                  • #10
                    KNR NAME VORNAME GEBOREN GESTORBEN
                    21 Beethoven Ludwig van 1770 1827

                    Comment


                    • #11
                      Momentan stehe ich etwas auf dem Schlauch. Sind den alle Ids richtig bestückt?
                      docendo discimus

                      Comment


                      • #12
                        Die Datenbanken sind von einem Informatik Professor für Datenbanken. Ich denke das ist soweit sicher ok. Es ist Oracle falls das hilft.

                        Ich weiß, ich kuck auch total blöd drein. Der Rest ging super...

                        Comment


                        • #13
                          Welcher Rest ? Nr 2?

                          Ich würde die Nummern trotzdem mal mit einzelnen Selects kontrollieren
                          docendo discimus

                          Comment


                          • #14
                            SELECT CDNR, NAME
                            FROM CD
                            WHERE CDNR IN (SELECT CDNR FROM SOLIST WHERE INSTRUMENT = 'Oboe')
                            AND CDNR IN (SELECT CDNR FROM SOLIST WHERE INSTRUMENT = 'Violine')


                            Das geht zB auch. Es ist immer wenn man verschiedene Tabellen verbinden muss.

                            Comment


                            • #15
                              Der Rest der 20 Aufgabe.

                              Also die Select Anweisungen klappen im Einzelnen. Er gibt alles von Beethoven bzw Mozart aus. Nur das beide auf der CD sein sollen rafft er nicht.

                              Comment

                              Working...
                              X