BennoAchenbach
Neuer Benutzer
- Beiträge
- 3
Ich versuche verzweifelt, eine Query mit Subqueries zu erstellen und finde einfach kleine Lösung. Ich bin kein Programmierer, sondern schreibe mit lediglich hin und wieder Abfragen auf einer bestehenden Datenbank.
In einer Tabelle sollen alle Datensätze ermittelt werden, die einer Bedingung entsprechen, also ein einfaches Count(*). Jetzt möchte ich diese Abfrage noch aufteilen in Subqueries und da scheitere ich.
Das Script sieht dann so aus
select jahr, count(*),
(select count(*) from daten where jahr>2020 and kennz like 'E%' and art='GR 1' ) as 'G1'
from daten
where jahr>2020 and daten like 'E%'
group by jahr
order by jahr;
Das Ergebnis sieht so aus. Die erste Spalte ist vom Wert korrekt, die zweite Spalte stimmt nicht mehr. Es fehlt nach meinem Verständnis ein group by jahr, damit die Zahlen korrekt berechnet werden.
Anmerkung: Wenn das Script funktioniert, besteteht es aus ca 10 Subqueries
+------+----------+------+
| jahr | count(*) | G1 |
+------+----------+------+
| 2021 | 534 | 146 |
| 2022 | 594 | 146 |
| 2023 | 614 | 146 |
| 2024 | 644 | 146 |
| 2025 | 162 | 146 |
+------+----------+------+
Aber wenn ich ein group by jahr einfüge, bekomme ich folgende Fehlermeldung.
(select count(*) from daten where jahr>2020 and kennz like 'E%' and status='GR 1' group by jahr) as 'G1'
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Was mache ich falsch?
In einer Tabelle sollen alle Datensätze ermittelt werden, die einer Bedingung entsprechen, also ein einfaches Count(*). Jetzt möchte ich diese Abfrage noch aufteilen in Subqueries und da scheitere ich.
Das Script sieht dann so aus
select jahr, count(*),
(select count(*) from daten where jahr>2020 and kennz like 'E%' and art='GR 1' ) as 'G1'
from daten
where jahr>2020 and daten like 'E%'
group by jahr
order by jahr;
Das Ergebnis sieht so aus. Die erste Spalte ist vom Wert korrekt, die zweite Spalte stimmt nicht mehr. Es fehlt nach meinem Verständnis ein group by jahr, damit die Zahlen korrekt berechnet werden.
Anmerkung: Wenn das Script funktioniert, besteteht es aus ca 10 Subqueries
+------+----------+------+
| jahr | count(*) | G1 |
+------+----------+------+
| 2021 | 534 | 146 |
| 2022 | 594 | 146 |
| 2023 | 614 | 146 |
| 2024 | 644 | 146 |
| 2025 | 162 | 146 |
+------+----------+------+
Aber wenn ich ein group by jahr einfüge, bekomme ich folgende Fehlermeldung.
(select count(*) from daten where jahr>2020 and kennz like 'E%' and status='GR 1' group by jahr) as 'G1'
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Was mache ich falsch?