Danke für die rege Beteiligung!
Das Problem scheint wohl doch komplexer zu sein als ich gestern noch im guten Glauben annahm. Fast alle Lösungen leiden unter dem selben Problem: Ich erhalte eine Liste aller Zielbehälter, die von jedem Rohstoff
einzeln erreicht werden können, wobei ich gerne wüsste welche Ziele von allen Rohstoffen gleichsam erreicht werden können. Was ich leicht bekomme ist also:
Code:
rohstoff zielbehälter
------------------------
1 101
1 130
1 140
2 50
2 130
3 50
3 101
3 130
3 140
Das sind schon nur die Rohstoffe aus einem konkreten Rezept, so dass das schon recht nah an der Lösung ist, wobei ich dies letztlich im Grunde mit einer Mischung eurer Vorschläge erreicht habe:
SQL-Code:
SELECT a.rohstoff, a.behnr FROM
(SELECT b1.rohstoff, b2.behnr FROM qundz qz
JOIN beh b1 ON b1.behnr=qz.quelle
JOIN rohstoffe rs ON b1.rohstoff=rs.rnummer
JOIN beh b2 ON b2.behnr=qz.ziel) a
INNER JOIN
(SELECT rohstoff FROM rezpos
WHERE reznr=:rn AND typ=1) b
USING (rohstoff)
Im Ergebnis sieht man, dass Behälter 130 als einziger von
allen Rohstoffen erreicht werden kann, und genau diesen suche ich! (Es kann generell durchaus mehrere Ziele geben bei manchen Rezepturen.)
Im Grunde lande ich, der noch keinen Kaffee hatte, wieder bei etwas ähnlichem von gestern: Rohstoffe pro Ziel zählen, und mit der Anzahl Rohstoffe im Rezept vergleichen. Das geht doch sicherlich hübscher
@shima: Ich habe den Primärindex nur auf der (an sich hier eher unbeteiligten) Spalte "id" liegen, aber einen UNIQUE-Index auf (quelle, ziel). Beraube ich mich da ggf. Vorteile, die ich im Primärindex hätte wie du ihn vorschlägst?
Danke euch schon mal!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)