Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kopiowanie wierszy między tabelami
Forum PHP.pl > Forum > Bazy danych > MySQL
stefan86
Witam.

W tabeli Users mam takie kolumny:

Id | User_name

czyli w praktyce np:

Cytat
Id | User_name
1 | Jan_Kowalski
2 | Jan_Nowak


A w tabeli Arts mam takie kolumny:

Id | Art_id | User_name

czyli w praktyce np:

Cytat
Id | Art_id | User_name
1 | 1 | Jan_Kowalski
2 | 2 | Jan_Nowak


Chciałbym aby w tej drugiej tabeli - Arts w kolumenie User_name nie było nazwy użytkownika, tylko jego Id z tabeli Users.

czyli w praktyce np:

Cytat
Id | Art_id | User_name
1 | 1 | 1
2 | 2 | 2



Jak to zrobić?
zaajcu
Tworzysz sobie zamiast User_name np "Users_id" i tam wrzucasz id z tabeli User jeżeli tabele są na innoDB to możesz dodatkowo zrobić pole Users_id jako klucz obcy wtedy sama baza danych będzie "pilnować" żeby tam znalazł się jakiś numer z tabeli Users z pola Id
stefan86
Witaj.

Dzięki za odpowiedź.

Cytat(zaajcu @ 12.03.2013, 08:12:37 ) *
Tworzysz sobie zamiast User_name np "Users_id" i tam wrzucasz id z tabeli User


Ja właśnie chcę w tabeli Arts zmienić nazwę użytkownika (autora danego artykułu) na jego ID z tabeli User. Artykułów jest ponad 50 tys. ogólnie napisało ich nieco ponad 20 tys. użytkowników. Ręcznie sprawdzanie jakie ID ma dany Użytkownik w tabeli Users i zamienianie jego nazwy użytkownika na jego ID przy każdym jego artykule w tabeli Arts będzie trudne do wykonania. Dlatego chcę się dowiedzieć czy można to zrobić jakoś automatycznie.
mmmmmmm
  1. UPDATE Arts JOIN Users ON Arts.Users_name=Users.User_name SET Arts.User_name=Users.Id
stefan86
Cześć.

Dzięki za odpowiedź

Cytat(mmmmmmm @ 12.03.2013, 15:06:17 ) *
  1. UPDATE Arts JOIN Users ON Arts.Users_name=Users.User_name SET Arts.User_name=Users.Id


Dokładnie o takie coś mi chodziło! Wielkie dzięki. Łap plusika. Musiałem tylko zmienić Arts.Users_name=Users.User_name na Arts.User_name=Users.User_name bo ja mam tam tabelę User a nie Users.

Tylko jest taka sprawa - da się jakoś zoptymalizować to zapytanie? Długo się wykonywało i w końcu wywaliło błąd Internal Server Error 500, jak sprawdzałem to wykonało gdzieś tak ok. 3/4 z całości.
mmmmmmm
W obu tabelach index na to pole.
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.