(SQL) herausfinden ob es einen Datensatz gibt oder nicht
Holger Lersch
- datenbank
0 Tom0 Michael Schröpl
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
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
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.