Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Masowa edycja rekordów
arek_ares
post 17.09.2010, 21:16:09
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
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Ramzaa
post 17.09.2010, 21:28:38
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


INSERT + WHERE [warunek] ?
Go to the top of the page
+Quote Post
arek_ares
post 17.09.2010, 21:40:49
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
Go to the top of the page
+Quote Post
Ramzaa
post 17.09.2010, 21:45:23
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


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'
Go to the top of the page
+Quote Post
arek_ares
post 17.09.2010, 21:53:46
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ę ;>
Go to the top of the page
+Quote Post
Ramzaa
post 17.09.2010, 22:07:55
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 smile.gif
Go to the top of the page
+Quote Post
arek_ares
post 17.09.2010, 22:13:38
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.
Go to the top of the page
+Quote Post
Quantum
post 18.09.2010, 09:35:20
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 smile.gif

UPDATE Employee
SET salary = (salary*0.1+salary)
WHERE department = 'A1'

Ten post edytował Quantum 18.09.2010, 09:37:49
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 09:39:12
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ń?
Go to the top of the page
+Quote Post
tehaha
post 18.09.2010, 09:44:01
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
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 09:45:19
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?
Go to the top of the page
+Quote Post
tehaha
post 18.09.2010, 09:46:33
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
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 09:48:20
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?
Go to the top of the page
+Quote Post
tehaha
post 18.09.2010, 09:50:13
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ć
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 09:56:03
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.
Go to the top of the page
+Quote Post
tehaha
post 18.09.2010, 10:02:05
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ł
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 10:05:40
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.
Go to the top of the page
+Quote Post
tehaha
post 18.09.2010, 10:11:51
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:
  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
Go to the top of the page
+Quote Post
arek_ares
post 18.09.2010, 10:31:54
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.
Go to the top of the page
+Quote Post
gigzorr
post 18.09.2010, 11:02:04
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?
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:30