Ich habe eine Tabelle mit den folgenden Spalten, die ich versuche, eine Ansicht zu erstellen, um einen Bericht zu erstellen, muss ich die Summe der absolvierten Stunden für eine bestimmte Klasse aber mit ein spezifischer Filter:Get Summe, mehrere Gruppen von mit Filter
| PK_CLASS_DAYS_ID | FK_MAIN_ID | FK_CLASS_ID | CLASS_DAY | OUTCOME | CLASS_DATE | HOURS |
|------------------|------------|-------------|-----------|---------|------------|-------|
| 1 | 27452 | 137 | 1 | *15 | 2015-11-15 | 8 |
| 2 | 27452 | 137 | 2 | *15 | 2015-11-16 | 8 |
| 3 | 27452 | 137 | 4 | *15 | 2015-11-18 | 8 |
| 4 | 27452 | 137 | 5 | BS15 | 2015-11-19 | 8 |
| 5 | 27452 | 2 | 1 | *16 | 2001-01-01 | 8 |
| 6 | 27452 | 48 | 1 | *16 | 2016-01-12 | 8 |
| 7 | 27452 | 48 | 2 | *16 | 2016-02-27 | 4 |
| 8 | 27452 | 2 | 1 | *17 | 2017-07-01 | 8 |
| 9 | 27452 | 137 | 1 | *16 | 2016-07-16 | 8 |
ich brauche die Summe der Stunden für jede Klasse (FK_CLASS_ID
) für jeden Schüler in meinem Tisch (zur Zeit habe ich gefiltert es zu ID 27452 für Testzwecke), während der Anwendung des folgenden Filters abgeschlossen finden für jede Klasse (FK_CLASS_ID
):
- (1)
CLASS_DAY
müssen - (2)
CLASS_OUTCOME
muss beginnen mit "*" - (3)
CLASS_DATE
muss die jüngste verschieden sein, während immer noch die beiden vorherigen Bedingungen aufweist. Die sich ergebende Ansicht sollte wie folgt lauten:
| PK_CLASS_DAYS_ID | FK_MAIN_ID | FK_CLASS_ID | Hrs |
|------------------|-------------|--------------|------|
| 1 | 27452 | 137 | 32 |
| 2 | 27452 | 2 | 8 |
| 3 | 27452 | 48 | 12 |
Die am weitesten ich mit dem Versuch, dies zu tun bekommen haben, ist die folgende select-Anweisung:
SELECT
t1.CLASS,
SUM(class_hours) as Hrs,
GROUP_CONCAT('D',classes_days.class_day) as DaysList,
main.FULLNAME
FROM
classes t1
INNER JOIN classes_days ON classes_days.FK_CLASS_ID = t1.CLASS_ID
INNER JOIN main ON main.PK_MAIN_ID = classes_days.FK_MAIN_ID
WHERE
main.PK_MAIN_ID = 27452
GROUP BY FK_CLASS_ID
ORDER BY CLASS
Können Sie erklären, was das Problem mit Ihrer Aussage ist? – Mureinik
Sie sollten beim Markieren vorsichtig sein. SQL Server <> MySQL. Ich würde die Tags bearbeiten, aber es gibt gerade eine ausstehende Bearbeitung. –
Meine aktuelle Anweisung berücksichtigt weder die CLASS_DAY-Spalte noch das letzte Datum, wenn zwei Zeilen mit demselben CLASS_DAY für dieselbe FK_CLASS_ID vorhanden sind. Außerdem muss es nur Zeilen hinzufügen, bei denen die Spalte OUTCOME mit einem Stern beginnt. Dies ist für MySQL v5.6. – Gustavo1478