Holger Lersch: (SQL) herausfinden ob es einen Datensatz gibt oder nicht

Hallo ForumsGemeinde !

Ich bin nach unzähligen Kombinationsversuchen der SQL-Befehle SELECT / EXISTS / AS / FROM ....  nicht auf die Lösung gekommen, wie ich eine Boolsche Variable mit dem 'Vorhandenseinstatus' (TRUE/FALSE) eines bestimmten Datensatzes zu füllen...

Also ein Ansatz meinerseits wäre (einer von 1000... ;-) :

SELECT AS[istda] EXISTS(SELECT Anzahl FROM tabelle WHERE shID='12345' AND aID=1) FROM tabelle

bin vielleicht aufm richtigen weg, oder begehe ich einen fatalen Denkfehler ?

Thanx4Help

Gruß
Holger

  1. Hallo Holger

    SELECT AS[istda] EXISTS(SELECT Anzahl FROM tabelle WHERE shID='12345' AND aID=1) FROM tabelle

    Ich weis zwar nicht unter welcher DB-Engine Du arbeiten musst, aber diese Funktionen wie EXISTS sind mir nicht als allgemeiner SQL-Standard bekannt.

    Dafür hier ein anderes Statement, das bei den meisten SQL-Engines funktioieren sollte:

    (SELECT count(shID) FROM tabelle WHERE shID='12345' AND aID=1) > 0

    Dieses Statement kann in der WHERE-Klausel verwendet werden und wird 'true' oder 'false' zurückgeben.

    Grüsse
    Tom

  2. SELECT AS[istda] EXISTS(SELECT Anzahl FROM tabelle WHERE shID='12345' AND aID=1) FROM tabelle
    bin vielleicht aufm richtigen weg, oder begehe ich einen fatalen Denkfehler ?

    Das kommt darauf an, in welchem Universum Du das Ergebnis brauchst.

    Wenn Dein Universum eine "normale" Sprache ist (in der es so etwas wie Boolean wirklich gibt), dann halte ich den Ansatz mit "select count(feldname) ..." von Tom für ideal.

    Wenn Du das Ergebnis aber selbst wiederum in einem SQL-Statement weiterverwenden willst, dann kann es  sein, daß ein Denkfehler vorliegt. Möglicherweise kommst Du mit einem Join viel eher zum Ziel.