Nick: wheri in all

Beitrag lesen

Tach!

Noch eine Frage. Wenn man in() dynamisch befüllt, so funktioniert das nur, wenn mindestens ein Argument an in() übergeben wird, sonst kommt es zu einem Fehler. Das ist relativ mühsam bei der Programmierung zu beachten.

Es ist sinnlos, das DBMS nach nichts zu befragen. Also solltest du das vorher feststellen, wenn es gar keinen Grund zum Suchen gibt. Das ist eine Plausibilitätsprüfung und solche sind immer mühsam aber unvermeidlich.

Wie gesagt ich hielte es intuitiv für nicht abwegig. Es ist ja auch eine Information, wenn man nach in() leer sucht, aber wenn es nicht funktioniert, kann man es eben nur so hinnehmen.

In die ähnliche Richtung ginge noch die Frage, wie man die 3 aus count(a) mit SQL selbst ermittelt, wenn das überhaupt funktioniert

Die Frage war doch, dass du wissen möchtest, wenn x Zuordnungen vorhanden sind. Heißt das, dass dieses x mit einer Abfrage ermittelt werden kann, die einen skalaren Wert liefert? Dann: Subquery (oder Stored Function).

Die Daten für b kommen von außen und werden in die Abfrage in() injiziert, wenn das Deine Frage ist. So kann ich, nach meinem Wissen, auch nur außerhalb von SQL zählen, wie viel b auf a zutreffen müssen. Ich denke, anders geht es nicht, ist nur eine kleine Hoffnung, dass es doch anders funktioniert, wenn nicht, dann eben, wie Du schreibst, mühsam, aber unvermeidlich. Mehr noch, und das ist eigentlich wichtiger als die Schreibarbeit, es ist relativ unübersichtlich, wenn es sich nicht nur um eine Tabelle handelt, sondern um viele, die in der Weise, andere auch anders, verknüpft werden. Bei zehn und mehr verknüpften Tabellen ist die Abfrage nicht mehr wirklich zu erfassen, wenn die Stringbildung dauernd unterbrochen werden muss, um von außen etwas zu injizieren, das womöglich noch, von Bedingungen abhängig, mal in die Abfrage kommt, mal nicht. Da bin ich immer froh, wenn man gewisse Dinge mit SQL selbst erledigen kann.