Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Masowa zamiana wartosci
Forum PHP.pl > Forum > Bazy danych > MySQL
arfer
Witam,
Mam do Was takie pytanie, czy istnieje jakies zapytanie ktore masowo zamieniloby jakas wartosc w kolumnie tak zeby np wszystkie 1 zamienily sie na 99?
Mam taka sytuacje ze chcialbym zmienic niektorym uzytkownikom ich id ale wiadomo ze wtedy wszystkie ich wyniki w osobnej tabeli ktore byly przypisane do konkretnych userow znikna bo nie beda poprawne odwolania czyli wyniki zostana dla id 1 podczas gdy juz takiego usera nie bedzie bo zmienil id na 99. Nie chcialbym robic tego recznie bo mam kilka tysiecy wynikow w bazie gdzie na kazdego usera przypada po 100-200 wiec troche by to potrwalo wiec mam nadzieje ze jest jakies magiczne rozwiazanie tego problemu biggrin.gif
Pozdrawiam i Wesolych Swiat wink.gif
webdice
Poczytaj sobie o kluczach obcych.
arfer
Szczerze mowiac liczylem na bardziej precyzyjna rade. Tutaj nawet nie wiem gdzie mam zaczac tyle tych roznych przykladow smile.gif
webdice
Google. Takie trudne?
arfer
Mam wrazenie ze klucze obce to nie jest rozwiazanie mojego problemu. Moze pokaze jeszcze raz o co mi chodzi bo troche zamotalem w poprzednim poscie.
Mam jakąś tabele a w niej m.in kolumne user_id. Jak widac na zalaczonym obrazku mamy 7 wynikow dla usera o id 1. Chcialbym zmienic te id 1 na 99. Czy jest mozliwosc zrobic to masowo jednym zapytaniem czy musze kazdy wiersz edytowac przez Phpmyadmin osobno i zmieniac wartosc user_id z 1 na 99?
Pozdrawiam

viking
Jeżeli klucz obcy ma ustawione ON UPDATE CASCADE zwykły update rekordu spowoduje zmianę w tabelach zależnych.
arfer
Przegladajac literature przedmiotu zapoznalem sie czesciowo z dzialaniem kluczy obcych i moje wnioski sa nastepujace (jesli sie myle poprawcie mnie).
Klucze obce pozwalaja tworzyc powiazania miedzy tabelami w taki sposob ze jesli zmienimy dana wartosc w jednej tabeli zmieni sie ona takze w drugiej jesli zostalo utworzone miedzy nimi powiazanie. Jest to czesciowo wyjscie z mojego problemu aczkolwiek przyznam szczerze ze dla mnie 'niedzielnego' programisty ktory nie mial wczesniej z tym stycznosci wydaje mi sie to troszeczke skomplikowane a nie jest to odpowiedz konkretnie na moje pytanie bowiem ja chcialbym zmienic masowo wszystkie takie same wartosci w danej kolumnie czyli jesli chce zmienic 1 na 99 to tak zeby zmienily sie wszystkie 1 w tej kolumnie bez wzgledu na to czy sa inne tabele. Wiem ze w peirwszym poscie to zasugerowalem i faktycznie taka druga tabele gdzie moglbym utworzyc klucz obcy mam ale nie chcialbym jej ruszac. Chodzi mi tylko i wylacznie o ta jedna konkretna tabele gdzie chcialbym zmienic w niej niektore wartosci w jednej kolumnie ale tak ze gdy zmieniam wartosc 1 to zmieniaja sie wszystkie 1 w tej kolumnie. Czy jest taka mozliwosc czy musze to zrobic za pomoca kluczy obcych?
sazian
  1. UPDATE tabela SET user_id=99 WHERE user_id=1

ale to może doprowadzić do "konfliktu" jeśli użytkownik o id 99 już istnieje.
arfer
Dzieki wielkie Sazian o to mi wlasnie chodzilo. smile.gif
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.