Hallo Tobias,
ich hoffe ich krieg das halbwegs verständlich erklärt was ich will. Vielleicht erstmal ne Beispieltabelle:
das ist eine hervorragende Idee. Eine schöne Problembeschreibung.
Datum | Produkt | Arbeitschritt | Erfolg
01.01.09| X | A | yes
02.01.09| X | B | yes
01.01.09| Y | A | no
02.01.09| Y | A | yes
03.01.09| Y | B | yes
02.01.09| Z | A | yes
So, und nun hätte ich ganz gerne alle erfolgreichen Arbeitschritte 'A' mit Datum und Produktnamen, bei denen Arbeitsschritt 'B' bereits erfolgreich war. Die Produktnamen sind mir im Vorfeld nicht bekannt.
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.
Die Ausgabe sollte also nach meinen Vorstellungen so aus sehen:
Datum | Produkt
01.01.09| X
02.01.09| Y
Hat jemand einen Vorschlag für mich?
Ich hätte gleich zwei:
1. Du sagst:
Gib mir
das Datum, an dem
ein Produkt
aus
meiner Tabelle
den Arbeitsschritt A
erfolgreich durchlaufen hat
und das in der Liste der Produkte steht, die
den Arbeitsschritt B
bereits erfolgreich durchlaufen haben.
Setzen wir das in SQL um:
SELECT -- Gib mir
Datum, -- das 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.
)
Subselects unterstützt MySQL ab Version 4.1, und diese Version sollte Dir Dein Hoster auf jeden Fall zur Verfügung stellen, besser noch eine 5er-Version.
Alternativ könntest Du Dein Problem mit einem Selfjoin lösen, wie es Axel beschrieben hat.
Freundliche Grüße
Vinzenz