SQL-Code:
select distinct Wagen
from Wagen
inner join Verlauf vl1 on (Wagenzaehler = vl1.IDWagen) and (vl1.IDStrecke in (1,2))
inner join Verlauf vl2 on (Wagenzaehler = vl2.IDWagen) and (vl2.IDStrecke in (3,4))
Ohne das groß überprüft zu haben, sollte das schneller sein. Der erste Join schmeißt alle Wagen weg, die weder 1 noch 2 fahren. Der zweite Join eliminiert daraus dann alle die zwar 1 oder 2, aber weder 3 noch 4 fahren.
Das distinct dient dazu, dass jeder Wagen nur einmal in der Ergebnismenge vorkommt.