![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam tabelę:
Kombinacja id_testu i id_uzytkownika jest w tej tabeli unikalna. Jeśli użytkownik rozwiąże test to zwiększa się licznik (czyli wartość w kolumnie rozwiazany) o 1. Chcę wyeliminować kolumnę rozwiązany. Czyli jeśli jakiś użytkownik rozwiązał jakiś test 15 razy, to dotychczasowy 1 rekord ma się zmienić w 15 nowych. Chcę wyeliminować kolumnę rozwiązany ale zachować wszystkie dane. Jak to zrobić? Tabela zawiera już sporo rekordów więc o ręcznej konwersji nie ma mowy. Logiczne wydaje się napisanie jakiegoś skryptu php. Ale może są jakieś sprytniejsze metody, np za pomocą samego sql? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chcesz usunąć kolumnę z zachowaniem wszystkich rekordów to ALTER TABLE drop column....
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie tyle z zachowaniem rekordów co danych (informacji). Samo usunięcie kolumny rozwiazany powoduje utratę informacji.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 248 Pomógł: 31 Dołączył: 14.12.2010 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
chyba najłatwiej będzie zrobić to PHP, bo pisanie funkcji w SQL jest dosyć uciążliwe, przenieś sobie to wszystko do tablicy tymczasowej gdzie zrobisz wszystkie operacje jakie chcesz a potem skopiuj do normalnej, jak masz bardzo dużo wpisów w tabeli to uważaj żeby nie zwiesić MySql bo mogą się dane wtedy zepsuć przy takich operacjach.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Klucz obejmujący kolumny id_testu i id_użytkownika nie będzie mógł być dłużej unikalny.
2. Utwórz sobie nową tabelę (by nie operować na oryginale) z docelową strukturą. 3. Napisz skrypt, który wrzuci do nowej tabeli dane na podstawie danych ze starej (tj. odczytujesz rekord i do nowej wrzucasz jego okrojoną (o kolumnę rozwiązane) wersję w ilości równej wartości z kolumny rozwiązane). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 17:39 |