Versandkosten nach Kategorien

Hallo, mit meinem Versandkostenproblem komme ich noch nicht so richtig weiter. Folgendes Problem: Ich habe als Beispiel 3 verschiedene Kategorien, welche unterschiedliche Versandkosten mit sich bringen. Kat1 - 6,50 Kat2 - 9,90 Kat3 - 30,00 (MIN((SELECT 1 FROM s_articles_categories WHERE articleID=a.id AND categoryID=kat1)) usw Habe ich Im Warenkorb nur Artikel der Kat 1, soll Summe 6,50 berechnet werden. Sobald der Warenkorb eine Position mit Kat2 enthält, soll weder Kat 1, noch Kat 3 angezeigt werden. Sobald auch nur ein Artikel der Kat3 enthalten ist, darf nur noch Kat 3 als Versandart angezeigt werden. Kat3 hat die höchsten Lieferkosten. Jetzt kann ich bei Kat1 sagen, Kat2 und Kat3 sperren. Das geht perfekt. Bei Kat2 kann ich kat3 sperren, nicht aber kat1, da mir die Auswahl dann nicht zur Verfügung steht, sobald ein Kat1 Artikel im Warenkorb enthalten ist. Das gleiche bei Kat 3 abwärts. Ich hoffe ich konnte mein Problem einigermaßen rüberbringen? Ich hab es über die eigene Berechnung und einem Freitext versucht, da kam ich aber nicht weiter. Hat jemand eine Idee für mich? Von mir aus auch über einen Aufschlag, solange der entsprechend angezeigt wird. Gruß Dirk