Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: SQL Vereinfachen

  Alt 17. Feb 2012, 10:36
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)
  Mit Zitat antworten Zitat