dedlfix: SQL Abfrage

Beitrag lesen

Hi!

Bitte zitiere nur das, worauf du dich konkret beziehst, nicht einfach alles.

SELECT contract_date AS Vertragsbeginn,

COUNT(IF(status=1, "Warte auf Daten", IF(status=2, "Produziert", NULL))) AS Vertragsstatus
FROM my_table

  
Ich sagte mehrere COUNT(IF...)-Konstrukte, nicht mehrere IF-Konstrukte in einem COUNT. Und ich sprach davon, nach dem Vertragsbeginn zu gruppieren. Jedenfalls suggerierte mir dein Bild, dass du das pro unterschiedlichem Vertragsbeginn zusammengefasst haben möchtest.  
  

> 1.) Er zählt auch den Vertragsbeginn irgendwie, da steht ne 0. Er soll aber nur den Status (und später andere Spalten) zählen, aber nicht alles!  
  
Ich sehe "da" nicht, kann also auch nicht nachvollziehen, was "da" ist und warum "da ne 0 steht". Bitte beschreibe für Außenstehende nachvollziehbar. Dass alles gezählt wird, liegt sicherlich an der fehlenden Gruppierung.  
  
Wenn du nur bestimmte Status zählen lassen willst, musst du mit einem WHERE die Datenmenge genau darauf begrenzen. Die Zählerei ist unabhängig davon und kommt extra hinzu. Es wäre auch möglich, einfach COUNT(\*) zu zählen, aber dann müsstest du über Vertragsbeginn und Status gruppieren. Dann bekommst du jedoch nicht nur eine Zeile pro Vertragsbeginn sondern eine für jede mögliche Kombination Beginn + Status. Um daraus deine Tabelle wie im Bild zu erstellen, benötigst du zusammenfassende Logik im abfragenden Programm.  
  

> 2.) Wenn ich kein COUNT mache, ist das Datum falsch formatiert, in 10-stelligen Nummern (wie genau weiß ich nicht). Das müsste auch noch richtig angezeigt werden.  
  
Beispiel bitte. Welches konkrete Statement zusammen mit welchen Spaltentypen führt zu welcher Ausgabe? Dass Datumswerte in eine Darstellung ohne Trennzeichen "umformatiert" werden, passiert eigentlich nur, wenn man mit ihnen zu rechnen versucht. Oder wenn man Unix-Timestamps als Integer/String abspeichert.  
  
  
Lo!