Nicht optimale Musterlösungen?

  • Naja, ich nochmals, ich probier grad nochmals die 20 SQL Beispiele durch, jetzt, wo ichs ein bisserl besser kann, und bin dabei auf folgendes gestoßen:


    Bei Beispiel 18 (alle Bücher (ISBN, InvNr), von denen es mehr als ein Exemplar gibt) verwende ich folgenden Query


    select InvNr, ISBN from Exemplar
    where ISBN in (select ISBN from Exemplar Ex
    group by ISBN
    having count(InvNR) > 1)


    ergibt 64 Hits.


    Die Musterlösung dazu von den DM Leuten ist aber


    select Ex.InvNr, Ex.ISBN
    from Exemplar Ex
    where Ex.ISBN in
    (select B.ISBN
    from Buch B, Exemplar E
    where B.ISBN = E.ISBN
    group by B.ISBN
    having count(E.InvNr) > 1);


    Warum gehen die bitte im inneren Select den "Umweg" über die Buch-Tabelle??? Ich mein, ich select mir halt direkt die ISBN ausm Exemplar und gruppiers zum counten der InvNr'n nach der ISBN, weshalb sollte ich bitte die Buchtabelle mit der Exemplartabelle joinen, dann nach der Buch-ISBN gruppieren und die Exemplar-Invnummern zählen?? Meiner Meinung nach macht das keinen Sinn: was meint ihr dazu?

  • ja, das weiß ich schon, aber ich "geb" ja nur das aus, wonach ich auch guppier, nämlich die ISBN!! Schau dir den inneren Query nochmals an


    select ISBN from Exemplar Ex
    group by ISBN
    having count(InvNR) > 1


    siehst du, ich selecte die ISBN, und gruppiere auch danach, das passt so schon!