Tach!
Aber diese Abfrage wäre sicherlich sehr rechenintensiv, wenn ich hier diesen Abgelich auf tausende Produkte machen möchte.
Unter Umständen. Ist sie denn ständig auszuführen? Wird sie ständig mit allen Produkten ausgeführt oder nur beschränkt auf ein oder wenige Produkte? Und vielleicht ist dein Server ja auch viel schneller als du denkst.
So ein RDBMS arbeitet mengenorientiert. Wenn du eine Bedingung formulieren kannst (erstmal in Worten statt konkreter Syntax), mit der du die Menge der relevanten Datensätze beschränken kannst, dann geht das auch in einer Abfrage. Aber du kannst bei deinem Ziel (meiner Meinung nach) nicht jeden Datensatz einzeln betrachten und entscheiden, ob er in die Ergebnismenge kommen soll oder nicht. Du kannst diese Entscheidung nur treffen, indem die Werte anderer Datensätze berücksichtigt werden, an denen du dich entlanghangeln musst. Und du musst beim Vorliegen des Ergebnisses abbrechen und die anderen Datensätze ignorieren. Die zu ignorierenden kannst du nicht vorher ermitteln. Das sind alles Bedingungen, die nicht mengenorientiert abgearbeitet werden können (wie gesagt, nach meinem Dafürhalten).
Du kannst versuchen, das mit User-defined Variables innerhalb eines Select hinzubekommen. Aber das ist mehr Gefummel als eine Stored Procedure/Function und hilft dir auch nicht bei der Performance, weil auch dann jeder Datensatz einzeln betrachtet werden muss und kein Index beim Ausschließen nicht benötigter Datensätze hilft.
dedlfix.