![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 6.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam jedna "stara" tabele (ok 5000 rekordów), która ma pole 'opis'. Ten opis powiela się często w tej tabeli, np rekordy 1-3 mają ten sam opis, 4-15 inny, 15-34 inny itd.
Utworzyłem sobie nową tabelę descriptions (id int not null auto_increment, opis text). Chciałbym sobie skopiować opisy ze starej tabeli bez powielania ich do nowej tabeli. Czyli opis reprezentujący rekordy 1-3 w starej tabeli będzie miał swój jeden odpowiadający rekord w nowej tabeli, ten. który reprezentuje 4-15 rekordy także będzie miał swój rekord w nowej tabeli itd. aż do wyczerpania unikalnych opisów ze starej tabeli. Jak to zrobić automatycznie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Utwórz sobie najpierw widok np:
create view stare_dane as select distinct opis from stara_tabela a potem utworz sobie skrypt kopiujacy z widoku do nowej_tabeli zmien swoje dane (nazwy tabel bazy itd...)
p.s. kiedys mi to kopiowalo ![]() Ten post edytował poli25 29.03.2012, 12:29:13 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 6.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Wygląda okej - dzięki!
Nie ma jakiegoś sposobu, żeby to zrobić po prostu komendami SQLa w terminalu? ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Nie działa, wiesz moze dlaczego? opis to nazwa kolumny, zatem powinna być objęta gravisami `, jeśli już. Dodatkowo ze starej tabeli trzeba wybrać dokładnie tyle kolumn, ile wstawiasz do nowej tabeli, czyli: . |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 75 Pomógł: 0 Dołączył: 6.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Skopiowałem, dzięki : )
aaaaale... mam mały błąd kiedy chce porównać te rekordy, związany z charsetami:
Chcę wyczytać ID opisu z nowej tabeli (wcześniej skopiowałem do niej wszystkie opisy ze starej), przyrównując opis ze starej tabeli. Przy porównaniu w klauzuli WHERE pojawią się powyższy błąd. Próbowałem zmienić charsety tabel tymi komendami.
Ale to nic nie pmogło. Jak to rozwiązac? Ten post edytował starter91php 29.03.2012, 13:55:40 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Tabele powinny mieć to samo kodowanie jeszcze przed skopiowaniem danych, w przeciwnym wypadku trzeba by skorzystać z MySQL-owej funkcji CONVERT lub CAST:
Chcę wyczytać ID opisu z nowej tabeli (wcześniej skopiowałem do niej wszystkie opisy ze starej), przyrównując opis ze starej tabeli. Przy porównaniu w klauzuli WHERE pojawią się powyższy błąd. Ale przecież to jest bez sensu, bo w starej tabeli masz wiele id odpowiadających jednemu opisowi. No chyba, że Cię nie rozumiem, a jeśli tak, to wyjaśnij dokładniej. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 02:00 |