Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Kleines optisches Problem bei Gesammtsumme (MariaDB)

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Schnurze, 10 November 2018.

  1. Schnurze

    Schnurze Benutzer

    Hi,
    mit folgender Tabelle:

    Code:
    CREATE TABLE `test` (
       `ID` INT(11) NOT NULL AUTO_INCREMENT,
       `Vorname` VARCHAR(50) NOT NULL DEFAULT '0',
       `Nachname` VARCHAR(50) NOT NULL DEFAULT '0',
       `Zähler` VARCHAR(50) NOT NULL DEFAULT '0',
       PRIMARY KEY (`ID`)
    )
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB
    AUTO_INCREMENT=3
    ;
    und folgenden Daten:


    ID
    Vorname Nachname Zähler
    1 Andreas Maier 12
    2 Elisbeth Buschmann 42
    3 Kim Maier 5
    4 Ernst Zorn 10
    5 Maja Maier 1
    6 Matthias Kurtz 25
    7 Carola Maier 2
    8 Elli Kurtz 3

    führe ich folgende Abfrage durch:
    Code:
    select
    ifnull (Nachname,'Summe') as Name,
    Zähler,
    SUM(cast(Zähler as decimal(5,0))) as Betrag from test
    group by Nachname with rollup
    
    und erhalte wunschgemäß folgendes Ergebnis mit Teil- und Gesammtsumme:


    Name
    Zähler Betrag
    Buschmann 42 42
    Kurtz 25 28
    Maier 12 20
    Zorn 10 10
    Summe 10 100


    Jetzt stört mich nur noch der Zähler '12' in der (Gesammt-)Summen Zeile. Wie kann ich den auf "" setzen? Hab schon alles mögliche ausprobiert und bin nun ratlos.
    Irgendwelche Ideen?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    in der Summenzeile steht keine 12 und das Select ist syntaktisch falsch.
     
  3. Schnurze

    Schnurze Benutzer

    Ok in der Summenzeile steht eine 10 in der Zählerspalte - Asche auf mein Haupt.
    Ein syntaktisch falsches Select (welches das richtige Ergebnis liefert) ist ja ganz nett, hilft mir aber auch nicht wirklich weiter.
    Das eine Zahl kein VARCHAR sein sollte und keine Umlaute in den Spaltenüberschriften enthalten sein sollten ist mir auch klar.
    Das ist aber genau so bei der Originaltabelle, die ich leider nicht so ohne weiteres abändern kann.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Das Problem ist, daß z.B. Zähler für Maier 12, 5, 1 oder 2 sein kann, welches soll im Resultat erscheinen? Deine Abfrage ist logisch falsch und alle Datenbanken außer MySQL und MySQL in aktuellen Versionen erkennen das als Fehler. Dein MySQL liefert einen zufälligen Wert. Das ist nicht im Sinne der Theorie von Datenbanken.
     
  5. Schnurze

    Schnurze Benutzer

    Code:
    select
       ifnull (Nachname,'Summe') as Name,
       MAX(cast(Zähler as decimal(5,0))) as Zahl,
       SUM(cast(Zähler as decimal(5,0))) as Betrag
    from
       test
    group by
       Nachname with rollup
    
    
    liefert:


    Name
    Zahl Betrag
    Buschmann 42 42
    Kurtz 25 28
    Maier 12 20
    Zorn 10 10
    Summe 42 100

    also alles definiert, was aber natürlich überhaupt nichts am Problem ändert.....
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=*# select * from schnurze;
     nachname  | zaehler
    -----------+---------
     maier     |      12
     buschmann |      42
     maier     |       5
     zorn      |      10
     maier     |       1
     kurtz     |      25
     maier     |       2
     kurtz     |       3
    (8 rows)
    
    test=*# select coalesce(nachname,'Summe') as nachname, case when nachname is null then null else  max(zaehler) end as max_zaehler, sum(zaehler) summe from schnurze group by rollup (nachname) order by max_zaehler;
     nachname  | max_zaehler | summe
    -----------+-------------+-------
     zorn      |          10 |    10
     maier     |          12 |    20
     kurtz     |          25 |    28
     buschmann |          42 |    42
     Summe     |             |   100
    (5 rows)
    
    test=*#
    
     
    ukulele und Schnurze gefällt das.
  7. Schnurze

    Schnurze Benutzer

    Vielen Dank, auch wenn das nicht MYSQL / MariaDB ist.
    Hat mir aber doch auf die Sprünge geholfen:
    Code:
    IF(Nachname IS NULL, '', Zähler) AS Zahl
     
    akretschmer gefällt das.
Die Seite wird geladen...
Ähnliche Themen - Kleines optisches Problem
  1. Schrat
    Antworten:
    5
    Aufrufe:
    3.303
  2. Uniii
    Antworten:
    3
    Aufrufe:
    3.273
  3. Walter
    Antworten:
    4
    Aufrufe:
    3.960

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden