Datemod Beispiel 3

  • Quote from ViennaLinux

    Beispiel 16:
    Kann mir jemand weiterhelfen. Es ist sicher nur eine Kleinigkeit - warum funktioniert die 2te Subquery nicht so wie ich es erwarte(so wie die erste)?


    SQL
    1. SELECT werk.titel,
    2. (SELECT COUNT(aufnahme.titel) FROM aufnahme WHERE aufnahme.titel=werk.titel) AS AnzahldAufnahmen,
    3. (SELECT COUNT(spielt.ida) FROM spielt WHERE spielt.ida=aufnahme.id) AS AnzMusiker
    4. FROM werk
    5. ORDER BY AnzahldAufnahmen DESC;


    Mein Hirn sagt immer "ja so muesste es stimmen" - aber es geht ned - HILFE


    Das OUTPUT zeigt IMMER 16 Musiker :-(


    das problem bei deiner 2. subquery ist, dass du auf aufnahme.id bezug nimmst, die relation aufnahme aber sonst nicht vorkommt (außer in der 1. subquery, die aber unabhängig von der 2. ist.


    zudem soll ein werk mit titel und zunamen des komponisten ausgegeben werden.


    meine lösung sieht folgendermaßen aus (vielleicht geht es kürzer, aber es stimmt jedenfalls):

    wichtig ist auch das distinct in der unterabfrage, da so nur die verschiedenen musiker ausgegeben werden.



    das 30er habe ich auch so ähnlich, ein bisschen kürzer sogar:

    Quote

    SELECT vorname, zuname FROM person p WHERE (SELECT SUM(verdienst) FROM spielt s WHERE s.idm = p.id) > 700


    Ringerl: ich glaube eher nicht, dass der verdienst pro zeiteinheit gilt. davon steht nirgends was.

    Die fetten Jahre sind vorbei.

  • @ Kitty:


    Ich hab den Output direkt aus der Ausgabedatei kopiert...
    mit der verbesserten Abfrage schaut der Output nun so aus:


    Code
    1. titel; datum; instrumente
    2. "Auf das neue Jahrtausend"; "1993-12-13"; "3"
    3. "Auf das neue Jahrtausend"; "1993-12-15"; "3"
  • Quote from fedex

    irgendwie kommt aber immer eine andere reinfolge raus. kanns sein das die angaben sich geänder haben? mir kommt beim selben code (von bsp. 12) ein anderes ergebnis raus.


    bei bsp. 12 solltest du 13ergebnisse haben(vor der änderung waren 8ergebnisse)...reinfolge der namen die dort stehen ist egal...

  • Quote from Ahnungsloser

    könnte irgendjemand der bereits bei der abgabe war die richtigen datensätze posten - wäre angenehm zum vergleichen


    ...schau mal ein paar Threads über deinen...

  • den thread hab ich schon gesehen, aber die ersten zwei abfragen die ich ausprobiert habe waren falsch,(nr 13+16) hab die anderen zwar noch nicht verglichen - aber ich dachte mir du warst noch nicht bei der abtgabe - aber trotzdem danke für den netten hinweis

  • Quote from Ahnungsloser

    den thread hab ich schon gesehen, aber die erste abfrage die ich ausprobiert habe war falsch,(nr 13) hab die anderen zwar noch nicht verglichen - aber ich dachte mir du warst noch nicht bei der abtgabe - aber trotzdem danke für den netten hinweis

    ;) ;) ;)
    doch, ich war schon, haben einige beispiele durch (13 wurde NICHT besprochen, aber der tutor hat sich alle "durchgelesen")


    anyway, viel glück euch allen :thumb:

  • könnte jemand den COALESCE
    ausdruck erklären wie man den einsetzt?
    hab nämlich bei bsp 24 folgenden code:

    select p.vorname, p.zuname, p.geburtsdatum,
    count(s.IDA) as Aufnahmen,
    count(s.Instrument) as Instrumente,
    sum(Verdienst) as Gesamtverdienst
    from musiker natural join Person p left join spielt s
    on id = idm
    group by p.vorname, p.zuname, p.geburtsdatum

    aber bei gesamtverdienst kommen halt NULL werte raus, wenn der musiker keinen verdienst hat..

    Knowledge is power. That is especially felt by those, who don´t have it.

  • Quote from Sharkal

    könnte jemand den COALESCE
    ausdruck erklären wie man den einsetzt?


    Code
    1. select p.vorname, p.zuname, p.geburtsdatum,
    2. count(s.IDA) as Aufnahmen,
    3. count(s.Instrument) as Instrumente,
    4. coalesce(sum(Verdienst),0) as Gesamtverdienst
    5. from musiker natural join Person p left join spielt s
    6. on id = idm
    7. group by p.vorname, p.zuname, p.geburtsdatum;