Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Masowa edycja rekordów
Forum PHP.pl > Forum > Przedszkole
arek_ares
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
INSERT + WHERE [warunek] ?
arek_ares
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
A tak, sory.. pomyłka biggrin.gif
Oczywiście, że używasz do tego polecenia UPDATE, a wygląda to tak:
  1. UPDATE `tabela` SET `kolumna` = 'wartosc' WHERE `cos` = 'wartosc'
arek_ares
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
Kombinuj, bo to naprawdę prosta sprawa. Pomyśl smile.gif
arek_ares
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
drugi kod jest poprawny, błąd leży w warunku smile.gif

UPDATE Employee
SET salary = (salary*0.1+salary)
WHERE department = 'A1'
arek_ares
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
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
A jak teraz mogę zamienić jej typ?
tehaha
wchodzisz do phpMyAdmin i zmieniasz
arek_ares
Tylko, że ja wszystko robię w phpMyAdmin...
Trzeba to jakąś komendą czy jak?
tehaha
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
Tylko o to właśnie chodzi, że ja mam się nauczyć komend.
tehaha
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
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
przy takich operacjach wersja nie ma znaczenia, a spróbuj tak:
  1. 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
  1. SELECT * FROM Employee WHERE department = 'A1'
i sprawdź czy pobiera rekordy
arek_ares
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
jakis blad przy użyciu update czy cos?
_d7
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 smile.gif
Wyjaśnij co to znaczy, że dostajesz null? Możesz zacytować błąd?
krispak
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.