QiK: Tabelleninhalt ändern, Fremdschlüssel

Hallo,

ich arbeite mich gerade ein bisschen in MySQL (5.0) ein und habe eine Tabelle angelegt, in der ein paar Mitarbeiter samt monatlichem Gehalt, Einstellungsdatum etc. eingetragen sind. Nun soll jeder Mitarbeiter, der weniger als 35.000 EUR Jahresgehalt verdient 2,5% mehr Gehalt bekommen, alle anderen sollen 2,0% mehr verdienen. Ich habe mittlerweile schon einige Abfragen durchprobiert, bekomme aber nie das gewünschte Resultat. Hat jemand einen Tipp für mich?

Eine weitere Frage bezieht sich auf das Thema Fremdschlüssel. Um eine Fremdschlüsselbeziehung zwischen zwei Tabellen herzustellen, müssen beide Tabellen vom Typ Inno-DB sein und die für die Fremdschlüssel benutzten Felder müssen indiziert sein. Beides habe ich auch beim Erstellen der Tabellen beachtet, bekomme aber eine Fehlermeldung, wenn ich folgendes anschließend eingebe:

alter table Tabelle1 add constraint f_key foreign key (spalte1)  references Tabelle2 (spalte2) on update no action on delete no action;

Habe ich etwas übersehen, nicht beachtet, total falsch gemacht?

Gruß
QiK

  1. Hello,

    ich arbeite mich gerade ein bisschen in MySQL (5.0) ein und habe eine Tabelle angelegt, in der ein paar Mitarbeiter samt monatlichem Gehalt, Einstellungsdatum etc. eingetragen sind. Nun soll jeder Mitarbeiter, der weniger als 35.000 EUR Jahresgehalt verdient 2,5% mehr Gehalt bekommen, alle anderen sollen 2,0% mehr verdienen. Ich habe mittlerweile schon einige Abfragen durchprobiert, bekomme aber nie das gewünschte Resultat. Hat jemand einen Tipp für mich?

    Die Lösung heißt "if(bedingung, wert_für_zutreffend, wert_für_unzutreffend)"

    oder wenn man noch mehr Kriterien hat, dann nimm "case"

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. ich arbeite mich gerade ein bisschen in MySQL (5.0) ein und habe eine Tabelle angelegt, in der ein paar Mitarbeiter samt monatlichem Gehalt, Einstellungsdatum etc. eingetragen sind. Nun soll jeder Mitarbeiter, der weniger als 35.000 EUR Jahresgehalt verdient 2,5% mehr Gehalt bekommen, alle anderen sollen 2,0% mehr verdienen. Ich habe mittlerweile schon einige Abfragen durchprobiert, bekomme aber nie das gewünschte Resultat. Hat jemand einen Tipp für mich?

    Du kommst mit einem UPDATE und entsprechend gefüllter WHERE-Klausel. Da Du zwei Änderungsaufgaben hast, scheue Dich nicht auch zwei SQLs abzusenden.

    Eine weitere Frage bezieht sich auf das Thema Fremdschlüssel. Um eine Fremdschlüsselbeziehung zwischen zwei Tabellen herzustellen, müssen beide Tabellen vom Typ Inno-DB sein und die für die Fremdschlüssel benutzten Felder müssen indiziert sein. Beides habe ich auch beim Erstellen der Tabellen beachtet, bekomme aber eine Fehlermeldung, wenn ich folgendes anschließend eingebe:

    alter table Tabelle1 add constraint f_key foreign key (spalte1)  references Tabelle2 (spalte2) on update no action on delete no action;

    Habe ich etwas übersehen, nicht beachtet, total falsch gemacht?

    Ja, Du hast die Fehlermeldung hier nicht eingestellt.

    1. Hello,

      Du kommst mit einem UPDATE und entsprechend gefüllter WHERE-Klausel. Da Du zwei Änderungsaufgaben hast, scheue Dich nicht auch zwei SQLs abzusenden.

      war auch mein erster Gedanke, aber Vorsicht: wenn du zuerst die <35K ausführst, könnten da Leute zwei Gehaltserhöhungen auf einmal erhalten.

      MfG
      Rouven

      --
      -------------------
      Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
      1. Du kommst mit einem UPDATE und entsprechend gefüllter WHERE-Klausel. Da Du zwei Änderungsaufgaben hast, scheue Dich nicht auch zwei SQLs abzusenden.
        war auch mein erster Gedanke, aber Vorsicht: wenn du zuerst die <35K ausführst, könnten da Leute zwei Gehaltserhöhungen auf einmal erhalten.

        Ist mir auch schon mal passiert, habe eine Erfolgszulage über mehr als ein Jahr doppelt (!) erhalten (ich habe wirklich nicht durchgeblickt, sonst hätte ich vielleicht gemeldet). Kam später raus, wurde aber aus Gründen der Unternehmenskultur nicht zurückgenommen. Wir merken uns: Erfassungsfehler sind keine Fehler der SW.

      2. Hallo,

        desterwegen reicht ein Update mit CASE WHEN .... THEN .... ELSE ....

        Ganz ausnahmsweise mal ;)

        Cheers, Frank ... der sich immer noch den Kopf zermartert wie man eine Gebührenstruktur modellieren kann ... und deswegen ziemlich miserabel geputtet hat :(

        1. Cheers, Frank ... der sich immer noch den Kopf zermartert wie man eine Gebührenstruktur modellieren kann ... und deswegen ziemlich miserabel geputtet hat :(

          Golf? Wie elitär.

          Was ist das Problem genau mit der Gebührenstruktur? Zu viele Vertragsarten, zu viele Specials? Probleme mit dem Abnehmer?

          1. Servus,

            Golf ist eine gute Gelegenheit bei uns mal Tacheles mit Leuten zu reden (sie auf Missstände aufmerksam zu machen) die sonst nicht direkter Ansprechpartner sind.

            Aber mal zum eigentlichen Thema. Ja, quasi zu viele Arten/Varianten wie und worauf Gebühren erhoben werden, zu viel Variabilität in den Definitionsmöglichkeiten. Und es gibt keine Spezifikation des Gebührenprozesses aus Business-Sicht.

            Z.b. gibt es eine Verwaltungsgebühr [1]:
            [1] wird monatlich berechnet und quartalsweise abgerechnet (in Rechnung gestellt)
            [1] ist 1.75% vom Assetvolumen eines Investors (jemand gibt uns 10 Mio USD zum vermeeren ;)) für die ersten 2 Mio und dann jeweils 0.47% pro weitere 2 Mio.)
            für [1] gilt aber auch, dass pro Berechnungszeitraum mindestens Betrag X als Gebühr veranlagt werden, aber nie mehr als Y% vom Gesamtvolumen pro Abrechnungszeitraum.
            Über die Berechnungszeiträume verändert sich natürlich auch der Portfolio / Assetwert, was mit beachtet werden soll.
            Der Basiswert auf welchen die Gebühr anzuwenden ist darf auch variieren.

            Auf der anderen Seite gibt es Gewinnabgabe-Gebühren. Diese sind relative Angaben und können an fixen oder fliessenden Vergleichswerten gemessen werden. Beispiel für Gewinnabgabe-Gebühr [2]:
            Macht das Portfolio einen Gewinnzuwachs von 10% möchte ich gern 5% davon kassieren, also 5% von 10% vom absoluten Gewinn.
            Wenn jetzt der Portfoliowert unter den ursprünglichen Wert fällt, möchte ich bis zum Wiedererreichen des ursprünglichen Wertes keine Gewinnabgabe beziehen.
            Ausserdem ist die Gewinnabgabe (unter Umständen) nur fällig, wenn ein Vorgabewert überschritten wird. Z.b. muss der Gewinn unseres Portfolios den Gewinn eines Euro Stoxx oder Dax relativ übersteigen.

            Ziel ist, die Definitionsmöglichkeiten in ein zentrales Datenmodell kippen zu können .. und nach selbigem suche ich gerade. :)

            Cheers, Frank

            1. Ziel ist, die Definitionsmöglichkeiten in ein zentrales Datenmodell kippen zu können .. und nach selbigem suche ich gerade. :)

              Das Problem kenne ich recht gut, es scheint zu den Standardproblemen zu gehören. Man sagt ja immer im Finanzdienstleistungsbereich "Unsere Kunden kennen unsere Konditionen nicht" ("und das ist auch gut so, so wissen die nie was sie am Ende zahlen werden"), allerdings ist "man" ist diesem Fall oft selbst ahnungslos bzgl. der genauen Zusammenhänge.

              Kommen von solchen "mans" dann Anfordungen zur SW-Entwicklung bzw. -Anpassung, dann hat man als Entwickler oft den Salat und muss betreuerisch, manchmal pastoral, tätig werden. Denn als SW-Mensch darf man ja nicht behaupten, dass der Abnehmer unzureichend spezifiziert (oder gar inkonsistent ;).

              Da sich im Team meist keiner findet, der das machen will bzw. kann, steht dann der tapfere SW-Entwickler vielleicht selbst irgendwann auf und berichtet über "Schwierigkeiten mit der Umsetzung", bspw. wegen hoher Komplexität. Damit kommt man bei der Abnehmerschaft meist gut an, da man einerseits selbst die Schwachstelle zu sein scheint, anderseits Komplexität der Geschäftslogik immer Geld kostet.

              In diesem speziellen Fall geht es wohl um Regelmengen, die erarbeitet (und dann implementiert) werden müssen, zudem dürfte (unnötige) Komplexität vorliegen und zudem die Abbildung in einer relationalen Datenbank schwer fallen.

              Du hast doch als Modernisierer immer solche netten UML-Tools zur Hand, helfen die da nicht?

              1. Sagen wir so, die Ummeltools zur Modellierung machen leider noch nicht die Transformation in ein physikalisches Datenbankmodell von allein. Wonach ich suche ist eine mögliche Implementierung von Tabellen und Relationen ...

                Cheers, so long, Frank

                1. Sagen wir so, die Ummeltools zur Modellierung machen leider noch nicht die Transformation in ein physikalisches Datenbankmodell von allein. Wonach ich suche ist eine mögliche Implementierung von Tabellen und Relationen ...

                  Wir würden Dir da gerne helfen, solche Entscheidungen sind so zu sagen Unser Spezialgebiet.

                  Das Problem scheint Uns zu sein, dass neben dem o.g. pastoralen Wirken ein konkretes Datenmodell hermuss. Du kennst die Zusammenhänge besser als Wir, insofern macht es keinen Sinn die Zusammenhänge zu schildern, denn Dein Vorsprung bliebe bestehen.

                  Was Du machen könntest, wäre die Sache ganz abstrakt zu Papier, äh, HTML, bringen, da könnten Wir dann ggf. zu- und eingreifen.

                  Grüsse in Paradies!
                  Lully