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

INSERT in Tabelle, mit SELECT aus anderer Tabelle

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Bazilinho81, 27 November 2013.

  1. Bazilinho81

    Bazilinho81 Neuer Benutzer

    Hallo!
    Ich möchte gerne Werte aus einer Tabelle mit einem COUNT-Befehl zählen und dieses Ergebnis in Abhängigkeit des Datums in eine andere Tabelle speichern. Aber irgendwie hängt mein Statement noch, sobald ich die WHERE-Bedingung hinzufüge. Ich hoffe, Ihr könnt mir helfen.. Vielen Dank schonmal im Voraus!!

    Code:
    INSERT INTO my_database.resulttable (04_web_income)
    SELECT COUNT(*) FROM my_database.follows as t1, my_database.resulttable as t2 WHERE t2.02_AUTHOR = 'WEB' AND DATE(t1.06_InsertTime) = t2.01_datum GROUP BY t2.01_datum
    
    Das SELECT-Statement an sich funktioniert und gibt mir die Anzahl meines "income" pro Tag wieder, soweit dieser in der resulttable vorhanden ist. Jetzt möchte ich diese Werte eben noch dem entsprechenden Eintrag der resulttable hinzufügen...

    Vielen Dank schonmal!!

    Gruß, Bazilinho
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Du suchst da wohl eher ein Update, oder? Aber wozu das? Das ist zum einen redundant (weil man kann es ja via select erfragen) und zum anderen inkonsistent (die Tabelle kann sich ja ändern).
     
  3. ukulele

    ukulele Datenbank-Guru

    Das Ausgangsstatement ist syntaktisch falsch. Du gruppierst nach einer Datumsspalte die aber im Select nicht vorkommt. Also zählst du alle Einträge (falls MySQL das ausführt was es eigentlich nicht dürfte), dann kannst du auch auf die Gruppierung verzichten.

    Abgesehen davon macht es keinen Sinn sowas in eine extra Tabelle zu schreiben wegen der Update-Problematik und Redundanz. Viel mehr Sinn macht eine View mit deinem Select.
    Code:
    SELECT    t2.01_datum AS Datum,
            count(*)AS Income
    FROM    my_database.follows as t1,
            my_database.resulttable as t2
    WHERE    t2.02_AUTHOR = 'WEB'
    AND        date(t1.06_InsertTime) = t2.01_datum
    GROUP BY t2.01_datum
     
  4. Bazilinho81

    Bazilinho81 Neuer Benutzer

    Hallo!
    Vielen Dank zusammen! Ja, die Redundanz ist hier absolut gewünscht, da ich eine Tabelle habe, in der Datensatz für Datensatz gespeichert wird. Letztlich will ich einfach eine Übersichtstabelle haben, in der das Ergebnis des Ganzen steht.
    Ich hzabe das ganze jetzt über eine Stored Procedure gelöst, der ich als Parameter das Datum mitgebe..
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Das ist - typisch für Tabellen ;-)

    Auch das geht, vermeidet die Redundanz und liefert valide Daten.
     
Die Seite wird geladen...

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