![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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 Ten post edytował arek_ares 17.09.2010, 21:23:17 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 17 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
INSERT + WHERE [warunek] ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 17 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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ę ;>
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 207 Pomógł: 17 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Kombinuj, bo to naprawdę prosta sprawa. Pomyśl
![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 450 Pomógł: 84 Dołączył: 27.11.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
drugi kod jest poprawny, błąd leży w warunku
![]() UPDATE Employee SET salary = (salary*0.1+salary) WHERE department = 'A1' Ten post edytował Quantum 18.09.2010, 09:37:49 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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ń?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
użyj typu DECIMAL albo FLOAT dla tej kolumny, jeżeli masz przeprowadzać działania matematyczne to nie może to być string
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
A jak teraz mogę zamienić jej typ?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
wchodzisz do phpMyAdmin i zmieniasz
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tylko, że ja wszystko robię w phpMyAdmin...
Trzeba to jakąś komendą czy jak? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no to w czym problem, wybierasz tabelę potem kolumnę dajesz edytuj i tam zmieniasz, przecież po to jest phpMyAdmin żebyś nie musiał komend wpisywać
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tylko o to właśnie chodzi, że ja mam się nauczyć komend.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
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ł
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
przy takich operacjach wersja nie ma znaczenia, a spróbuj tak:
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 i sprawdź czy pobiera rekordy |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 17.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
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.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 652 Pomógł: 47 Dołączył: 6.02.2010 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
jakis blad przy użyciu update czy cos?
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:30 |