22.05.2015, 16:17
Dieser Beitrag wurde zuletzt bearbeitet: 18.06.2015, 23:00 von Arne Drews.
Hallo,
Ich poste mal zu Beginn die Query, damit ihr wisst, worum es geht:
Ich suche quasi alle Lieferscheine, zu denen scheinbar noch keine Rechnungen erstellt wurden. Das Belegkennzeichen
Jeder Beleg, egal ob Lieferschein oder Rechnung hat eine eindeutige
Die Logik ist damit klar:
Was mich ein wenig aus dem Konzept bringt:
So wie oben im Code, bekomme ich 796 Datensätze.
Wenn ich in dem Subselect das
Warum bekomme ich denn mehr Datensätze, wenn ich die Ergebnismenge des Subselects weiter eingrenze?
Da habe ich ein kleines Verständnis-Problem und freue mich auf erleuchtende Hinweise.
Ich poste mal zu Beginn die Query, damit ihr wisst, worum es geht:
Code:
select
lieferscheine.* -- der Kürze halber
from
VKBelege lieferscheine
where
lieferscheine.Belegkennzeichen = 'VLL'
and lieferscheine.BelID not in ( select ReferenzBelID from VKBelege where ReferenzBelID is not null and Belegkennzeichen = 'VFR' )
order by
lieferscheine.Belegdatum desc
VLL
steht für die Lieferscheine, VFR
für Rechnungen.Jeder Beleg, egal ob Lieferschein oder Rechnung hat eine eindeutige
BelID
. Für den Fall, daß aus einem Lieferschein bereits eine Rechnung erstellt wurde, gibt es die ReferenzBelID
in der Rechnung, die der BelID
des Lieferscheins entspricht.Die Logik ist damit klar:
Code:
Selektiere alle Lieferscheine, deren BelegID in keiner ReferenzID der Rechnungen vorhanden ist.
Was mich ein wenig aus dem Konzept bringt:
So wie oben im Code, bekomme ich 796 Datensätze.
Wenn ich in dem Subselect das
and Belegekennzeichen = 'VFR'
entferne, bekomme ich nur noch 264 Datensätze.Warum bekomme ich denn mehr Datensätze, wenn ich die Ergebnismenge des Subselects weiter eingrenze?
Da habe ich ein kleines Verständnis-Problem und freue mich auf erleuchtende Hinweise.
