Guten Tag Zusammen,
ich betreibe eine Labordatenbank, welche die Messergebnisse von Kundenproben verwaltet und über ein Ticketsystem verarbeitet.
Jeder Kunde kann 1:n Prozesse (ProzessID) haben
Jeder Kunde kann 1:n Tickets (TicketID) haben.
Im Laufe der Zeit, schickt ein Kunde mehrere Proben (SampleID) seiner Prozesse.
Immer dann, wenn er eine oder mehrere Proben schickt, entsteht ein Ticket. Das heißt, ein Ticket ist wie ein Container, in dem mehrere Proben zusammengefasst sind.
Ich hoffe, ich habe mich soweit verständlich ausgedrückt.
Jedes Ticket kann also 1:n Proben haben, wobei die jeweiligen SampleID‘s auch die dazugehörige ProzessID als Fremdschlüssel mit sich führen.
Für eine TicketID möchte ich nun die jeweils letzten 5 Proben der im Ticket enthaltenen Prozesse ermitteln.
Mit „WHERE ProzessID IN (SELECT ProzessID FROM tblSample WHERE TicketID = @TicketID)“ als Kriterium, kann ich die über die im Ticket enthaltenen Prozesse ermitteln.
Gäbe es in einem Ticket stets nur eine Probe - also auch nur ein Prozess -, so würde
SELECT TOP (5) SampleID FROM tblSample … + WHERE-Kriterium, wie oben formuliert,
das richtige Ergebnis liefern.
Da es aber im Ticket mehrere Proben/Prozesse gibt bzw. geben kann, müsste dieser SELECT TOP (5)-Befehl nacheinander für jede ProzessID ausgeführt werden, die durch die Unterabfrage „SELECT ProzessID from tblSample WHERE TicketID = @TicketID“ geliefert werden.
Wie macht man das?
Muss man hier wirklich iterieren (und wenn ja, wie?) oder gibt es einen anderen Weg?
Vielen Dank im Voraus an alle, die sich damit beschäftigen möchten.
Gruß,
Holger
ich betreibe eine Labordatenbank, welche die Messergebnisse von Kundenproben verwaltet und über ein Ticketsystem verarbeitet.
Jeder Kunde kann 1:n Prozesse (ProzessID) haben
Jeder Kunde kann 1:n Tickets (TicketID) haben.
Im Laufe der Zeit, schickt ein Kunde mehrere Proben (SampleID) seiner Prozesse.
Immer dann, wenn er eine oder mehrere Proben schickt, entsteht ein Ticket. Das heißt, ein Ticket ist wie ein Container, in dem mehrere Proben zusammengefasst sind.
Ich hoffe, ich habe mich soweit verständlich ausgedrückt.
Jedes Ticket kann also 1:n Proben haben, wobei die jeweiligen SampleID‘s auch die dazugehörige ProzessID als Fremdschlüssel mit sich führen.
Für eine TicketID möchte ich nun die jeweils letzten 5 Proben der im Ticket enthaltenen Prozesse ermitteln.
Mit „WHERE ProzessID IN (SELECT ProzessID FROM tblSample WHERE TicketID = @TicketID)“ als Kriterium, kann ich die über die im Ticket enthaltenen Prozesse ermitteln.
Gäbe es in einem Ticket stets nur eine Probe - also auch nur ein Prozess -, so würde
SELECT TOP (5) SampleID FROM tblSample … + WHERE-Kriterium, wie oben formuliert,
das richtige Ergebnis liefern.
Da es aber im Ticket mehrere Proben/Prozesse gibt bzw. geben kann, müsste dieser SELECT TOP (5)-Befehl nacheinander für jede ProzessID ausgeführt werden, die durch die Unterabfrage „SELECT ProzessID from tblSample WHERE TicketID = @TicketID“ geliefert werden.
Wie macht man das?
Muss man hier wirklich iterieren (und wenn ja, wie?) oder gibt es einen anderen Weg?
Vielen Dank im Voraus an alle, die sich damit beschäftigen möchten.
Gruß,
Holger