arek_ares
17.09.2010, 21:16:09
Siemka. Zacząłem naukę MySQLa w XAMMPie. Zacząłem robić zadania z budową tabeli. Wprowadzałem dane, dodawałem nowe kolumny, zmieniałem pojedyncze rekordy.
Teraz mam zadanie zwiększyć wypłatę wszystkim pracownikom z działu A1 o 10%. Czy jest jakiś sposób żeby zrobić to 1 komendą?
Z góry dzięki
Ramzaa
17.09.2010, 21:28:38
INSERT + WHERE [warunek] ?
arek_ares
17.09.2010, 21:40:49
A jak dać, żeby każdą wypłatę zwiększyć o te 10%?
A insert to nie jest do wprowadzania nowych danych?
Myślałem coś o UPDATE
UPDATE Employee Set salary=[i tutaj nie wiem co]
WHERE department=A1
Ramzaa
17.09.2010, 21:45:23
A tak, sory.. pomyłka

Oczywiście, że używasz do tego polecenia UPDATE, a wygląda to tak:
UPDATE `tabela` SET `kolumna` = 'wartosc' WHERE `cos` = 'wartosc'
arek_ares
17.09.2010, 21:53:46
No ok rozumiem, ale co mam wpisać w tą pierwsza wartość, wiem, że to ma być ta podwyższona wypłata ale o to właśnie chodzi, że się zastanawiam czy można to jakoś zapisać równaniem np y=x*0,1+x żeby to policzył dla wszystkich z departamentu A1. No bo nie sztuka by było ręcznie wpisać wartość o 10% wyższą, no chyba że się mylę ;>
Ramzaa
17.09.2010, 22:07:55
Kombinuj, bo to naprawdę prosta sprawa. Pomyśl
arek_ares
17.09.2010, 22:13:38
No wlasnie moje pumysly sie wypalily.
Spróbowalem
Kod
UPDATE Employee SET salary = (salary*0,1+salary)
WHERE department = 'A1'
Kod
UPDATE Employee SET salary = (salary*0.1+salary)
WHERE department = 'A1'
Kod
UPDATE Employee SET salary = (salary*10%+salary)
WHERE department = 'A1'
Oraz kombinacje bez nawiasów i wychodzi albo Null albo 0 albo jakiś błąd.
Quantum
18.09.2010, 09:35:20
drugi kod jest poprawny, błąd leży w warunku

UPDATE Employee
SET salary = (salary*0.1+salary)
WHERE
department = 'A1'
arek_ares
18.09.2010, 09:39:12
Niestety, tutaj też mam NULL. Może to ma coś wspólnego z tym, że przy tworzeniu tabeli, kolumnę "Salary" dałem typ "long" i może nie przyjmuje ona działań?
tehaha
18.09.2010, 09:44:01
użyj typu DECIMAL albo FLOAT dla tej kolumny, jeżeli masz przeprowadzać działania matematyczne to nie może to być string
arek_ares
18.09.2010, 09:45:19
A jak teraz mogę zamienić jej typ?
tehaha
18.09.2010, 09:46:33
wchodzisz do phpMyAdmin i zmieniasz
arek_ares
18.09.2010, 09:48:20
Tylko, że ja wszystko robię w phpMyAdmin...
Trzeba to jakąś komendą czy jak?
tehaha
18.09.2010, 09:50:13
no to w czym problem, wybierasz tabelę potem kolumnę dajesz edytuj i tam zmieniasz, przecież po to jest phpMyAdmin żebyś nie musiał komend wpisywać
arek_ares
18.09.2010, 09:56:03
Tylko o to właśnie chodzi, że ja mam się nauczyć komend.
tehaha
18.09.2010, 10:02:05
eh no to bierz manuala od mysql i zobacz jak się zmienia typ kolumny, a jeżeli Ci się nie uda to możesz zmienić w phpMyAdmin i sprawdzić jaka komenda SQL została wygenerowana przez phpMyAdmin i już będziesz wiedział
arek_ares
18.09.2010, 10:05:40
Ok, zmieniłem w phpMyAdmin tak jak mówiłeś, na FLOAT i dałem potem komendę UPDATE Employee SET salary = (salary*0.1+salary) WHERE department = 'A1' i nic. Zmieniłem na DECIMAL i tak samo, w obu przypadkach mam NULL. A wersja XAMMPa ma znaczenie? Bo używam 1.4 bo w nowszym Apache mi nawala.
tehaha
18.09.2010, 10:11:51
przy takich operacjach wersja nie ma znaczenia, a spróbuj tak:
UPDATE Employee SET salary = 1.1*salary WHERE department = 'A1'
a tak dla pewności to sprawdź czy ta kolumna department jest odpowiednio rozpoznawana może tam też masz coś dziwnego np. dodatkowe spacje czy jakiś znak zrób
SELECT * FROM Employee WHERE department = 'A1'
i sprawdź czy pobiera rekordy
arek_ares
18.09.2010, 10:31:54
Użyłem tego Twojego pierwszego kodu dla FLOAT oraz DECIMAL i nadal mam NULL (nawet dla pewności zwiększyłem dozwoloną ilość znaków). Sprawdziłem ten drugi kod, i pokazuje pracowników z działu A1.
gigzorr
18.09.2010, 11:02:04
jakis blad przy użyciu update czy cos?
Cytat(arek_ares @ 18.09.2010, 11:31:54 )

Użyłem tego Twojego pierwszego kodu dla FLOAT oraz DECIMAL i nadal mam NULL (nawet dla pewności zwiększyłem dozwoloną ilość znaków). Sprawdziłem ten drugi kod, i pokazuje pracowników z działu A1.
A co widzisz w kolumnie salary? Może tam są po prostu wartości null i ich zwiększanie o 10% niewiele zmienia

Wyjaśnij co to znaczy, że dostajesz null? Możesz zacytować błąd?
krispak
18.09.2010, 12:17:21
Pokaz strukture tabeli Employee i troche wartosci co tam trzymasz..
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.