Lukas.: mysql: Kompliziertes SQL-Problem

Beitrag lesen

Hallo,

ich habe eine Query, die wie folgt beginnt.

SELECT 
sum(
(CASE 
WHEN (tab_b.MengeB = 0 AND tab_b.Art = 'AZ') THEN 0
WHEN (tab_b.MengeB = 0 AND tab_b.Art = 'AK') THEN 0
WHEN tab_b.MengeB = 0 THEN 1
ELSE
tab_b.MengeB
END)
* tab_b.PreisB *
...

Nun habe ich im System etwas umgestellt, was auch eine Umstellung in der Query zur Folge haben muß.

Und zwar müssen die Spalten "tab_b.MengeB" und "tab_b.PreisB" in obiger Query gegen die Spalten "tab_b.MengeA" sowie "tab_b.PreisA" ausgetauscht werden, wenn folgendes vorliegt:

In der Tabelle B (also tab_b) gibt es eine Spalte "VorID", in der die ID eines Vorgangs steht. In der Vorgangstabelle gibt es eine Spalte (A_B), die entweder ein "A" oder ein "B" enthält. Entsprechend muß dann in obiger Query "tab_b.MengeB" und "tab_b.PreisB" bzw. "tab_b.MengeA" und "tab_b.PreisA" eingesetzt werden. Hört sich eigentlich nach einem einfachen JOIN an, ich weiß nur nicht, wie ich den in die CASE Bedingung hineinpacken kann.

Zuvor war das kein Problem, weil "tab_b.MengeB" und "tab_b.PreisB" schlicht Standard waren immer eingesetzt werden mußten. Die Spalte A_B ist in der Vorgangstabelle neu hinzugekommen und entsprechend auch die Felder "tab_b.MengeA" und "tab_b.PreisA" in der tab_b - Tabelle.

L.