staging.inyokaproject.org

MySQL Abfrage: Aufträge Kunde der letzen x Monate

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Picknicker1

Anmeldungsdatum:
7. Juni 2008

Beiträge: Zähle...

Guten Mogen,

ich sitze an folgenden "Problem" Ich möchte aus meiner Datenbank die Aufträge der letzten Monate ausgeben lassen. Aktuell mache ich das so:

1
2
3
4
5
SELECT EXTRACT(YEAR_MONTH FROM start_time) as monat, count(id) as Fälle
FROM `vorgang` 
WHERE k_id = 222
GROUP BY  monat
ORDER BY monat DESC

Das funktioniert soweit auch ganz gut, was mich stört ist, dass wenn in einem Monat einmal kein Auftrag reinkommt er diesen einfach überspringt, es wäre allerdings hilfreich in diesem Monat dann eine 0 mit auszugeben.

WIe kann ich das denn lösen?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Picknicker1 schrieb:

WIe kann ich das denn lösen?

Du machst einen Rightjoin mit einer generierten Tabelle von Monaten und ersetzt in der count(id)-Spalte NULL-Werte durch 0.

Picknicker1

(Themenstarter)

Anmeldungsdatum:
7. Juni 2008

Beiträge: 84

Danke, könntest du das konkretisieren, ich stehe gerade auf dem Schlauch.

Wie meinst du das genau mit dem generieren und dem ersetzen duch 0. Bin schon eine weile raus aus Mysql ☹

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Picknicker1 schrieb:

Danke, könntest du das konkretisieren, ich stehe gerade auf dem Schlauch.

Nicht so richtig, mit MySQL habe ich immer vermieden zu arbeiten. Ich müsste das auch erst recherchieren. Ein Pointer zum Generieren: https://stackoverflow.com/questions/6870499/generate-series-equivalent-in-mysql#6871220

Wie meinst du das genau mit dem generieren und dem ersetzen duch 0. Bin schon eine weile raus aus Mysql ☹

Du wirst Dich wohl damit beschäftigen müssen, wenn Du eine Lösung bauen willst. siehe Outer Joins. Ansonsten gibt es auch Firmen, die man gegen Bezahlung anheuern kann. 😉

toddy Team-Icon

Ikhayateam
Avatar von toddy

Anmeldungsdatum:
31. Juli 2007

Beiträge: 9523

Picknicker1 schrieb:

WIe kann ich das denn lösen?

Hi,

wenn dort in der Tabelle ein NULL-Wert drin steht und 0 ausgegeben werden soll, wird hier eine Antwort besprochen, die auf Dein Problem übertragbar ist und dort ist dann auch das Thema outer joins mit bei.

Liebe Grüße,
Torsten

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Mit WITH RECURSIVE kann man sich eine Liste an Werten generieren, die man dann mit der bestehenden Query joinen kann. In der Dokumentation gibt es sogar ein Beispiel, das genau dem hier beschriebenen Fall entspricht, mit der Ausnahme, dass in der Dokumentation Tage statt Monaten verwendet werden und die Summe der Verkaeufe pro Tag gesucht ist, nicht die Anzahl: https://dev.mysql.com/doc/refman/8.0/en/with.html

Antworten |