Hi,
sorry für den dummen Thread Titel aber ich habe einfach keine Idee wie ich mein Problem in einen Satz fassen kann.
Ich habe eine Tabelle Orders. Diese hat Spalten wie Start, End, Number etc. Nichts besonderes.
Weiterhin habe ich eine Tabelle Tools, welche Werkzeuge beinhaltet, die zu dem Auftrag gelifert werden müssen.
Um diese Werkzeuge der Order zuzuordnen habe ich eine X-Table OrderTools mit den Spalten orderid und toolid und zwei weiteren Spalten tool_delivered und tool_returned in welche das jeweilige Versende- bzw RücklieferDatum der Tools vermerkt wird. Die Tool köännen nämlich u.U zu ganz anderen Zeiten gelifert und zurück geschickt werden als der Auftrag lautet. Also z.B. kann das eine Tool schon 3 Tage früher vor Ort eintreffen und erst 2 Tage später wieder verschickt werden. Warum das so ist würde zu weit führen hier zu erklären es ist aber ein unveränderlicher Fakt.
Ich kann das ja auch alles mit meinen Tabellen zu abbilden. Wo ich jetzt ein Problem habe ist, wenn ich mir eine Orderlist ausgeben lassen möchte in der ser aktuelle Status des Auftrags eingefügt wird. Der Status ist "geplant", wenn das Start-Datum des Auftrags noch nicht erreicht ist. "In Ausführung, wenn das erste Tool verschickt wurde und "Beendet" wenn das letzte Tool zurück geschickt wurde.
Mein Ansatz das abzubilden ist folgender:
Nun wird aber immer nur der erste Eintrag des ordertools berücksichtigt. Wenn also das erste Tool bereits zurück geliefert wurde, erhalte ich einen Status "Beendet".
Wie kann ich das oben gewünschte Verhalten erreichen?
Ich möchte das gerne mit einem Query erschlagen, da in sWhere und sOrder halt noch viele Filter und Sortierung-Parameter stehen, so dass ich die Tabelle eben nach jeder Spalte (eben auch nach Status) sortieren und filtern kann.
Wenn ich mehrere query mache, dann muss ich das Soriteren und Filtern alles von Hand machen. Nicht unmöglich aber viel Arbeit.
Gruß
Claus
sorry für den dummen Thread Titel aber ich habe einfach keine Idee wie ich mein Problem in einen Satz fassen kann.
Ich habe eine Tabelle Orders. Diese hat Spalten wie Start, End, Number etc. Nichts besonderes.
Weiterhin habe ich eine Tabelle Tools, welche Werkzeuge beinhaltet, die zu dem Auftrag gelifert werden müssen.
Um diese Werkzeuge der Order zuzuordnen habe ich eine X-Table OrderTools mit den Spalten orderid und toolid und zwei weiteren Spalten tool_delivered und tool_returned in welche das jeweilige Versende- bzw RücklieferDatum der Tools vermerkt wird. Die Tool köännen nämlich u.U zu ganz anderen Zeiten gelifert und zurück geschickt werden als der Auftrag lautet. Also z.B. kann das eine Tool schon 3 Tage früher vor Ort eintreffen und erst 2 Tage später wieder verschickt werden. Warum das so ist würde zu weit führen hier zu erklären es ist aber ein unveränderlicher Fakt.
Ich kann das ja auch alles mit meinen Tabellen zu abbilden. Wo ich jetzt ein Problem habe ist, wenn ich mir eine Orderlist ausgeben lassen möchte in der ser aktuelle Status des Auftrags eingefügt wird. Der Status ist "geplant", wenn das Start-Datum des Auftrags noch nicht erreicht ist. "In Ausführung, wenn das erste Tool verschickt wurde und "Beendet" wenn das letzte Tool zurück geschickt wurde.
Mein Ansatz das abzubilden ist folgender:
Code:
$sql = "SELECT DISTINCT(ge_order.order_id),`order_startdate`,`order_enddate` GROUP_CONCAT(ge_tool.tool_number SEPARATOR '<br>') AS `order_tools`, IF(order_deleted = 1,'".$orderStatusList['deleted']."', IF(ge_ordertool.ordertool_delivered IS NULL, '".$orderStatusList['planned']."', IF(ge_ordertool.ordertool_returned IS NULL, '".$orderStatusList['executing']."','".$orderStatusList['done']."'))) AS order_status, FROM ge_order LEFT JOIN ge_ordertool ON (ge_order.order_id=ge_ordertool.ordertool_order) LEFT JOIN ge_tool ON (ge_tool.tool_id=ge_ordertool.ordertool_tool) WHERE ge_order.order_enddate > DATE_SUB(CURDATE(), INTERVAL 1 YEAR) $type GROUP BY ge_ordertool.ordertool_order $sWhere $sOrder $sLimit ";
Wie kann ich das oben gewünschte Verhalten erreichen?
Ich möchte das gerne mit einem Query erschlagen, da in sWhere und sOrder halt noch viele Filter und Sortierung-Parameter stehen, so dass ich die Tabelle eben nach jeder Spalte (eben auch nach Status) sortieren und filtern kann.
Wenn ich mehrere query mache, dann muss ich das Soriteren und Filtern alles von Hand machen. Nicht unmöglich aber viel Arbeit.
Gruß
Claus
Kommentar