TSQL - Unterabfrage mit mehreren Ergebissen aufschlüsseln
Hallo Leute.
Bevor ich zur Frage komme, erst mal die Ausgangssituation:
Ich habe folgende 2 Tabellen mit den folgenden Beispielinhalten:
text
BELEGP
Der Wert "Blobkey" setzt sich wie folgt zusammen:
Kürzel "BP"
+
KENNUNG aus der tabelle Belegp
Ich versuche nun mit einem SELECT-Statement alle Datensätze aus der Tabelle "text" auszulesen, die zu einem der Datensätze aus Belegp passen.
Mein Statement sieht so aus:
Wenn ich nun als Belegnummer zb "20210017" angebe, funktioniert es perfekt, da es in der Belegp nur einen Datensatz mit dem Belegtyp "R" und der Belegnummer "20210017" gibt.
Nehme ich jedoch zB die Belegnummer "20210003" erhalte ich folgenden Fehler:
Der Fehler kommt scheinbar daher, dass es mehr als einen entsprechenden Datensatz in der Belegp gibt.
Wie müsste ich das Statement umbauen, um pro entsprechendem DS eine zeile zu erhalten?
Danke & LG
Bevor ich zur Frage komme, erst mal die Ausgangssituation:
Ich habe folgende 2 Tabellen mit den folgenden Beispielinhalten:
text
blobkey | content | etc..... |
---|---|---|
BPCCFFDBA5-D6A5-452A-ADF0-A61795061033 | Hier steht ein Text | etc.... |
BPCF8EE935-DE73-4A6A-BC84-AC794356E740 | Hier steht ein Text | etc.... |
BP49A3451D-1A42-4889-8AD3-C0BC7871FF1C | Hier steht ein Text | etc.... |
BELEGP
belegtyp | belegnummer | KENNUNG |
---|---|---|
R | 20210003 | CCFFDBA5-D6A5-452A-ADF0-A61795061033 |
R | 20210003 | CF8EE935-DE73-4A6A-BC84-AC794356E740 |
R | 20210017 | 49A3451D-1A42-4889-8AD3-C0BC7871FF1C |
Der Wert "Blobkey" setzt sich wie folgt zusammen:
Kürzel "BP"
+
KENNUNG aus der tabelle Belegp
Ich versuche nun mit einem SELECT-Statement alle Datensätze aus der Tabelle "text" auszulesen, die zu einem der Datensätze aus Belegp passen.
Mein Statement sieht so aus:
select * from text where blobkey = 'BP'+(SELECT CONVERT(NVARCHAR(36),Kennung) FROM BELEGP WHERE belegtyp = 'R' and Belegnummer = 'xxxxxxxx' )
Wenn ich nun als Belegnummer zb "20210017" angebe, funktioniert es perfekt, da es in der Belegp nur einen Datensatz mit dem Belegtyp "R" und der Belegnummer "20210017" gibt.
Nehme ich jedoch zB die Belegnummer "20210003" erhalte ich folgenden Fehler:
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
Der Fehler kommt scheinbar daher, dass es mehr als einen entsprechenden Datensatz in der Belegp gibt.
Wie müsste ich das Statement umbauen, um pro entsprechendem DS eine zeile zu erhalten?
Danke & LG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 637377
Url: https://administrator.de/contentid/637377
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
1 Kommentar