Ich habe eine Tabelle: tbl_uesrMysql Abfrage für verschiedene Spalte zählen finden
admission discharge name unit
2017-05-07 2017-05-10 Deepu 100
2017-05-07 2017-05-09 Nisanth 100
2017-05-08 2017-05-10 Ragesh 100
2017-05-15 2017-05-20 Vidhu 100
2017-05-15 2017-05-21 Reshma 100
2017-05-15 2017-05-21 Sneha 104
2017-06-01 2017-06-10 Lekshmi 104
2017-06-03 2017-06-10 Nidhin 104
2017-06-17 2017-06-20 Vineesh 104
2017-05-07 2017-05-08 Rithun 107
Die obige Tabelle beschreibt eine bestimmte Benutzer-admission date
, discharge date
und seine unit
. Aus der obigen Tabelle muss ich für eine gegebene date
und unit
how many admission happened
, how many discharge happened
finden.
Zum Beispiel auf 2017.05.07, gibt es 2 Eintritt in Einheit 100, 1 Eintritt in Einheit 107, keine Entladung in jeder Einheit.
Also in meinem Ergebnis möchte ich alle dates
(Aufnahmedatum und Entlassungsdatum), number of admission
, number of discharge
Erwartetes Ergebnis
Date no_admission no_discharge unit
2017-05-07 2 0 100
2017-05-07 1 0 107
2017-05-08 1 0 100
2017-05-08 0 1 107
2017-05-15 2 0 100
2017-05-15 1 0 104
2017-05-09 0 1 100
2017-05-10 0 3 100
2017-05-20 0 1 100
2017-05-21 0 1 100
2017-05-21 0 1 104
2017-06-01 1 0 104
2017-06-03 1 0 104
2017-06-17 1 0 104
2017-06-10 0 2 104
2017-06-20 0 1 104
Was ich versucht:
I habe keine Idee, alle Daten wie oben in eine neue Tabelle (Ergebnis) zu übernehmen. Ich habe versucht, no_admission zu finden nach:
SELECT admission as date, count(name) as no_admission, unit FROMtbl_user GROUP BY admission
und versuchte, die no_discharge zu finden nach:
SELECT discharge as date, count(name) as no_discharge, unit FROMtbl_user GROUP BY discharge
Aber noch sind nicht in der Lage mein Ergebnis zu finden, wie erwartet ..
Bitte helfen Sie mir zu finden das erwartete Ergebnis ..
Ich persönlich würde nur zwei Abfragen ausführen, um die Anzahl der einzelnen nach Datum gruppiert und diese zu einem einzigen Array durch das Datum indiziert. IMO, alle anderen Optionen würden schnell leicht verwirrend/unlesbar und schwerer zu pflegen werden. –