Hallo Tobias,
Ich gehe davon aus, dass ein Produkt nur einmal den gleichen Arbeitsschritt mit Erfolg "yes" durchläuft. Wenn dies nicht der Fall ist, dann müsstest Du erläutern, welchen dieser Datensätze Du haben möchtest.
Nun ist es leider so, das es vorkommen kann (muss aber nicht) das Arbeitsschritt A nocheinmal durchlaufen werden muss, wenn Arbeitsschritt B nicht erfolgreich war. In dem Fall würde mich nur der letzte erfolgreiche Arbeitsschritt A interessieren.
wenn Dich *nur* das Datum und das Produkt interessieren, ist es recht einfach (wiederum mache ich eine Annahme: das Datum ist in einer Spalte mit einem angemessenen Datentyp, DATETIME oder DATE, abgespeichert):
SELECT -- Gib mir
[link:http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_max@title=MAX](Datum), -- das neueste Datum, an dem
Produkt -- das Produkt
FROM -- aus
Tabelle -- meiner Tabelle
WHERE
Arbeitsschritt = 'A' -- den Arbeitsschritt A
AND
erfolg = 'yes' -- erfolgreich durchlaufen hat
AND -- wobei mich nur solche
Produkt IN ( -- Produkte interessieren
SELECT -- die in der Liste
Produkt -- der Produkte stehen
FROM
Tabelle
WHERE -- die
Arbeitsschritt = 'B' -- den Arbeitsschritt B
AND
erfolg = 'yes' -- erfolgreich durchlaufen haben.
)
GROUP BY -- ein neuestes Datum
Produkt -- kann es nur je Produkt geben
Möchtest Du noch weitere Spalten zu dem Datensatz mit dem jüngsten Datum haben, dann ist das *nicht* mehr so einfach. Dann benötigst Du wahrscheinlich eine korrelierte Unterabfrage, siehe zum Beispiel diesen Archivbeitrag von mir.
Freundliche Grüße
Vinzenz