MySQL: Datum selektieren + Vergleich von Daten in einer Spalte aus einer Tabelle

yarikata

Grünschnabel
Hallo,

ich habe folgendes Problem:
Ich möchte alle meine vorhanden Vorgänge (Posteingang und Postausgang) nach Monatsnamen sortieren und vergleichen.

Meine erste Anweisung sieht so aus:
Code:
select MONTHNAME(Datum) as 'Monat', count(Vorgangsnummer) as 'Posteingang' 
from Vorgang where Vorgangsnummer like 'PA%' order by Datum;

+-------+-------------+
| Monat | Posteingang |
+-------+-------------+
| May   |          10 |
+-------+-------------+
1 row in set (0.00 sec)

Wenn ich aber diese Anweisung erweitere, wird der Rückgabewert 0 zurückgegeben.
Code:
select MONTHNAME(Datum) as 'Monat', count(Vorgangsnummer) as 'Posteingang' 
from Vorgang where Datum=YEAR(CURDATE()) and Vorgangsnummer like 'PA%' order by Datum

+-------+-------------+
| Monat | Posteingang |
+-------+-------------+
| NULL  |           0 |
+-------+-------------+
1 row in set, 1 warning (0.00 sec)

Wie kann ich diesen Fehler beheben?

Des weiteren, wie bringe ich es fertig, das Postausgang mit dem Posteingang miteinander vergleichen wird?

Hier die Tabellenübersicht:
Code:
mysql> select * from Vorgang;
+------+----------------+------------+--------------+------+------+
| v_id | Vorgangsnummer | Datum      | Inhalt       | k_id | b_id |
+------+----------------+------------+--------------+------+------+
|    1 | PA.700311      | 2011-05-13 |              |    1 |    2 |
|    2 | PA.700322      | 2011-05-12 |              |    2 |    2 |
|    3 | PE.700.3.1.1   | 2011-05-16 | Brot         |    3 |    3 |
|    4 | PA.700331      | 2011-05-13 | Reitleine    |    4 |    3 |
|    5 | PA.700342      | 2011-05-13 |              |    5 |    3 |
|    6 | PA.700353      | 2011-05-13 |              |    6 |    3 |
|    7 | PA.700364      | 2011-05-13 | DFDFD        |    7 |    3 |
|    8 | PA.700375      | 2011-05-13 |              |    8 |    3 |
|    9 | PA.700386      | 2011-05-13 |              |    9 |    3 |
|   10 | PA.700397      | 2011-05-13 | ffffff       |   10 |    3 |
|   11 | PA.7003108     | 2010-05-16 | wlmwelwemwle |   11 |    3 |
+------+----------------+------------+--------------+------+------+
11 rows in set (0.00 sec)

Vielen Dank im Voraus
 
Hi.

Du bist im falschen Forum. Hier geht es um C/C++.

Du müßtest
SQL:
where YEAR(Datum) = YEAR(CURDATE())
verwenden

Gruß
 
Ok vielen Dank.
Jetzt fehlt eigentlich nur noch der zweite Part :)

Edit: Dies Funktioniert nur zur Hälfte richtig. Er zeigt mir zwar das gewünschte an, jedoch werden die Einträge vom Vormonat ignoriert.

Gruß
 
Zuletzt bearbeitet:
Dazu müßtest du mal erläutern was du mit vergleichen überhaupt meinst?

Gruß

Ich will alle Einträge in Vorgangsnummer zählen die mit PE und PA anfangen und sie moantlich, Quartal oder im Jahr mit einander vergleichen.

Dies sollte so aussehen:

Code:
+-------+-------------+-----------+
| Monat | Posteingang |Postausgang|
+-------+-------------+-----------+
| Mai   |          10 |        556|
+-------+-------------+-----------+
| Juni  |          55 |        556|
+-------+-------------+-----------+
 
Du könntest es so machen:
SQL:
select MONTHNAME(Datum) as 'Monat', 
  count(if(Vorgangsnummer like 'PE%', 1, NULL) as Posteingang,
  count(if(Vorgangsnummer like 'PA%', 1, NULL) as Postausgang
From
  ...
Gruß
 

Neue Beiträge

Zurück