PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : zwei kleine Fragen zu MySQL (Tabelleninhalt ändern, Fremdschlüssel)


QiK
30.04.2007, 13:52
Meine Frage bezieht sich zwar nicht auf das vB, aber vielleicht kann trotzdem jemand weiterhelfen ;)

Also, 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

hcmagix
30.04.2007, 14:55
Also, 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?

multipliziere ALLE mit 0,02 und die mit <35000 mit 0,005 sollte das Ergebnis bringen. (Ohne Garantie)

Andreas
30.04.2007, 15:13
Vielleicht so etwas?

UPDATE table SET gehalt = IF(gehalt < 35000, gehalt * 1.025, gehalt * 1.02)

QiK
01.05.2007, 13:58
Vielleicht so etwas?

UPDATE table SET gehalt = IF(gehalt < 35000, gehalt * 1.025, gehalt * 1.02)

Danke :)
Das scheint wohl auch soweit zu funktionieren... die Gehälter wurden zumindest alle entsprechend angepasst. Allerdings werden die Warnungen "Data truncated for column 'gehalt' at row 1" (wird für alle Zeilen ausgegeben) ausgegeben. Aber hauptsache es hat geklappt ;)