Kopiowanie kolumny miedzy tabelami |
Kopiowanie kolumny miedzy tabelami |
1.12.2012, 18:29:07
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.07.2012 Ostrzeżenie: (0%) |
Witam! Przeszukałem forum i nie znalazłem nic co by mi pomogło w rozwiazaniu problemu. Były przypadki podobne ale nie do końca te same. W związku z tym, że jestem zielony w sql chcialem zapytać czy jest mozliwosc skopiowania danych z tabeli A kolumny iduser, login do tabeli B do kolumny user_id, username. Obie tablice sa w tej samej bazie.
tablica A wyglada tak: | iduser | login | _______________ | 3 | mustafa| | 4 | nurek | tablica B wyglada tak: | user_id | username | _____________________ | | | | | | tablica B ma wygladac tak | user_id | username | _____________________ | 3 | mustafa | | 4 | nurek | |
|
|
1.12.2012, 19:03:44
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) |
|
|
|
1.12.2012, 19:34:30
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.07.2012 Ostrzeżenie: (0%) |
Jak chce skopiowac dwie kolumny to wywala blad: #1241 - Operand should contain 1 column(s)
Składnia: INSERT INTO `phpbb_users` (`user_id`, `username`) SELECT (`iduser`, `login`) FROM `league_users` jedna kopiuje bez problemu w kazdej z tabel jeszcze jest pare kolumn ale chce przeniesc tylko dwie Ten post edytował oliver84 1.12.2012, 19:39:01 |
|
|
1.12.2012, 20:04:06
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) |
|
|
|
1.12.2012, 22:22:48
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.07.2012 Ostrzeżenie: (0%) |
dzieki działa akopiowalo wszystko jak ta lala
|
|
|
1.03.2016, 21:34:05
Post
#6
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 31.10.2012 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Przyłącze się do tematu
Z Tabeli : sb_admins Do kolumny: data aid = autoinkrementacja Do Tabeli: sb_admins_servers_groups Do kolumny: datax admin_id: ten sam numer co w 'aid' kolumny sb_admins Chcę skopiować daty do drugiej tabeli (sb_admins_servers_group) , kolumny (datax) Oczywiście dla danego numeru id które mają różne nazwy kolumn. Napisałem takie zapytanie i zamieniałem frazę Where na aid='admin_id' lub admin_id='aid' Ale niestety dat mi nie przeniosło.
Wzorowałem się na przykładzie z tego tematu. |
|
|
2.03.2016, 10:03:25
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) |
Witam.
Kolumny data i datax w obu tabelach muszą być tego samego typu, a jeśli nie są, to trzeba wynik SELECT-a przekształcić za pomocą odpowiednich funkcji, np.
Funkcje daty i czasu można znaleźć w dokumentacji. Finalnie zapytanie powinno wyglądać tak:
Jeśli na kolumnę `data` lub `datax` nałożony jest index, to należy mieć to na względzie i użyć opcji ON DUPLICATE KEY UPDATE. Więcej informacji można znaleźć w dokumentacji. Pozdrawiam Ten post edytował mortus 2.03.2016, 10:03:58 |
|
|
2.03.2016, 15:42:31
Post
#8
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 31.10.2012 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Po wykonaniu Twojego zapytania jest komunikat
#1054 - Unknown column 'sb_admins_servers_groups.admin_id' in 'where clause' co do kolumn obie mają typ:timestamp z formatem 0000-00-00 00:00:00 bez atrybutów "on update......." Ten post edytował SUICIDE 2.03.2016, 15:44:07 |
|
|
2.03.2016, 21:08:26
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) |
I słusznie, bo zapytanie nie powinno działać tak, jak chcemy. W ogóle klauzula WHERE nie jest tutaj w tej formie potrzebna ponieważ jest to INSERT, dla którego SELECT jedynie wybiera odpowiednie wartości (VALUES). Zapytanie powinno wyglądać tak:
Można również użyć zwykłego UPDATE-a i SELECTA-a jako podzapytania:
Alternatywą dla INSERT INTO SELECT jest REPLACE:
Zarówno INSERT INTO ... SELECT, jak i REPLACE INTO ... SELECT muszą do porównania użyć unikalnego klucza i wstawiają rekordy, dla których ten unikalny klucz nie istnieje. |
|
|
2.03.2016, 21:31:45
Post
#10
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 31.10.2012 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) |
Dzięki wielkie.
Uratowałeś mnie przed Syzyfową pracą. ;P Już kilka rekordów manualnie zaczynałem przepisywać. |
|
|
Wersja Lo-Fi | Aktualny czas: 20.04.2024 - 01:14 |