2015-05-25 8 views
5

Es gibt zwei Tabellen. Erste Tabelle zeigt mir die Anzahl der schwangeren Frauen unter einer Krankenschwester. Denken Sie daran, dass es viele Krankenschwestern gibt, die unter einen Arzt kommen. Jede schwangere Frau ist einer einzigen Krankenschwester zugeordnet, und jede Krankenschwester ist einem einzelnen Arzt zugeordnet. So ist die Hierarchie istFormatieren von JSON-Daten für HighCharts mit MySQL unter Verwendung von MySQL

schwangere Frauen ->Krankenschwester ->Doktor.

Jetzt hat jede schwangere Frau ein Registrierungsdatum.

Zweite Tabelle zeigt mir die Zuordnung von Krankenschwestern zu Ärzten.

Nun, meine Abfrage sollte die Details der Ärzte und die Anzahl der registrierten schwangeren Frauen Monat für Monat (von Januar bis Dezember) für jeden Arzt abrufen. Also sollte mein Endergebnis im JSON-Format sein, wie es unten angewendet wird. Dieses Format benötige ich für HighCharts.

Und wenn es keine schwangeren Frauen für einen bestimmten Monat gewesen ist, sollte es 0

[{ 
     name: 'Doctor ID', 
     data: [7.0(Jan), 6.9(Feb), 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6(Dec)], 

     name: 'Doctor ID 2', 
     data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 
    }, { 
     name: 'Doctor Id 3', 
     data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
    }] 

zurückkehrt Ich habe die folgende Abfrage versucht, aber ich bin nicht in der Lage, die Struktur zu schaffen, wenn es um Monate kommt.

SELECT preg_reg_other.preg_id,nurse_dets.doctor_id,preg_reg_other.reg_date 
from preg_reg_other,nurse_dets 
where preg_reg_other.nurse_id = nurse_dets.nurse_id 
and preg_reg_other.reg_date is not null 
and nurse_dets.doctor_id= 1031 
order by preg_reg_other.reg_date asc 

EDIT

die beiden Tabellen sind wie folgt

Tabelle 1: nurse_dets

nurse_id population doctor_id nurse_name 

Tabelle 2: preg_reg_other

preg_id nurse_id reg_date 
+0

können Sie bitte beschreiben Sie Tabellen –

+0

@Joe_Tz Überprüfen Sie den Bearbeitungsabschnitt für die Namen der Tabellenspalten, hoffe das hilft :) –

+0

Bitte überprüfen Sie diesen Link http://stackoverflow.com/questions/14019964/how-to-group-by-year-and-month-in-mysql –

Antwort

2

Ich würde diese Art und Weise tun:

Für jeden Arzt eine Abfrage wie folgt tun:

/* get all pregrant women for a doctor, group by month and count records */ 
SELECT MONTH(p.reg_date), COUNT(*) 
FROM nurse_dets n 
INNER JOIN preg_reg_other p 
    ON n.nurse_id = p.nurse_id 
WHERE n.doctor_id = 1301 
AND n.reg_date IS NOT NULL 
GROUP BY MONTH(p.reg_date) 
ORDER BY p.reg_date ASC 

Dies wird Ihnen geben, für jeden Monat, die Zahl der schwangeren Frauen mit dem Arzt im Zusammenhang mit der ID 1301

Nun könnten Sie eine Abfrage wie dies für jeden Arzt tun und in jeder Iteration eine andere Serie bauen für Sie

Am Ende Diagramm finden Sie alle Ihre Serien-Array an Ihren Kunden weitergeben und die Daten für highcharts holen

EDIT

bekommen den Wert 0 für die Monate, wo es keine schwangeren Frauen ein leidet komplizierter ist, als die Gruppe, die durch keinen Wert zurückgeben, wenn es nicht mindestens ein Datensatz ist zählen.Versuchen Sie, diese Art und Weise:

SELECT months.num, COUNT(p.preg_id) 
FROM 
    (SELECT 1 AS num 
    UNION ALL SELECT 2 
    UNION ALL SELECT 3 
    UNION ALL SELECT 4 
    UNION ALL SELECT 5 
    UNION ALL SELECT 6 
    UNION ALL SELECT 7 
    UNION ALL SELECT 8 
    UNION ALL SELECT 9 
    UNION ALL SELECT 10 
    UNION ALL SELECT 11 
    UNION ALL SELECT 12) months 
LEFT JOIN preg_reg_other p 
    ON months.num = MONTH (p.reg_date) 
INNER JOIN nurse_dets n 
    ON n.nurse_id = p.nurse_id 
WHERE n.doctor_id = 1301  
GROUP BY MONTH(months.num) 
ORDER BY months.num ASC 

Zuerst haben wir manuell eine Tabelle mit den 12 Monaten bauen und „LEFT JOIN“ mit den anderen Tischen, so dass, wenn es keine Aufzeichnung ist, sollte die endgültige Zählergebnis in 0

Ich habe die Abfrage nicht getestet, aber ich hoffe, Sie bekommen die Idee

+0

Die Abfrage funktioniert gut, außer dass für die Einträge eines Monats, in dem die Anzahl der Schwangeren "0" ist, die Tabelle keinen Wert ausgibt. Können Sie mir helfen, das bitte zu beheben –

+1

überprüfen Sie meine Bearbeitung oben – Moppo

Verwandte Themen