![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam w bazie mySQL kolumnę z pewnymi ciągami liczb. Potrzebuję zapytania SQL, które zamieni je w poniższy sposób:
2 -> 1 2 -> 1 2 -> 1 3 -> 2 3 -> 2 7 -> 3 7 -> 3 7 -> 3 Jak to najprościej zrobić? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, problem jest tylko taki, że to był tylko początek ciągu. Dalej są kolejne liczby i nie jestem w stanie ręcznie ich wpisać do zapytania. Chciałbym uzyskać jakieś uniwersalne zapytanie. Macie jeszcze jakieś pomysły?
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A jak masz je zapisane w bazie i jak zapisujesz to na co chcesz je zmieniać?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie chcę, żeby wszystkie wartości zaczynały się od liczby 1 oraz żeby powtarzające się liczby miały tą samą wartość po zmianie.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A to było trzeba tak od razu!
![]()
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nieźle
![]() A jak mam w drugiej tabeli te same numery pól (tylko pod inną nazwą) to też można je zmienić w tej kwerendzie, tak żeby pasowały? tabela 1 pole1 2 -> 1 2 -> 1 2 -> 1 3 -> 2 3 -> 2 7 -> 3 7 -> 3 7 -> 3 tabela 2 pole2 2 -> 1 7 -> 3 Opierając się na tych przykładowych liczbach w drugiej tabeli może nie być np. liczby 3 i rekordy się nie powtarzają. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A tę pierwszą operację (w tabeli 1) zrobiłeś na jakiejś kopii albo w osobnej kolumnie? Bo jeśli nadpisałeś już dane, to nie ma jak nadpisać danych w tabeli 2 opierając się na poprzednich wartościach tabeli 1.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ćwiczę na kopii
![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
To zrób sobie w pierwszej tabeli osobną kolumnę na te nowe liczby. Dzięki temu będziesz mógł przekopiować wyniki do drugiej. Jak będziesz miał gotowe i podasz mi nazwy pól i tabel to podam Ci zapytanie.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Czyli taką tymczasową? Utworzyłem w tabeli1 kolumnę o nazwie pole3. Pozostałe pola/kolumny nazywają się tak jak w poprzednim przykładzie.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Powstawiałeś już do tej nowej kolumny wartości zgodnie z zapytaniem, które podałem wcześniej?
P.S. Nazywanie pól a'la pole1, pole2, pole35633 itp. to kiepski pomysł. One chyba coś oznaczają, prawda? |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tzn to jest testowa baza. Ale to poprzednie zapytanie aktualizowało pole1 w tabeli1. Nie bardzo wiem po co nam kolejna kolumna i jakie wartości ma trzymać?
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przeczytaj moje poprzednie posty, wszystko Ci wytłumaczyłem.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cytat To zrób sobie w pierwszej tabeli osobną kolumnę na te nowe liczby. Dzięki temu będziesz mógł przekopiować wyniki do drugiej. Jak będziesz miał gotowe i podasz mi nazwy pól i tabel to podam Ci zapytanie. Nie rozumiem od tego miejsca ![]() |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mówisz, że masz dwie tabele. Chcesz zamienić w pierwszej pewne wartości na inne. Okej. Potem chcesz w drugiej tabeli pozamieniać wartości wg tego jak zostały zmienione w tabeli 1. PROBLEM: Jak pozamieniasz w pierwszej tabeli, to już ta druga nie ma się na czym oprzeć - nie wie z czego powstały te nowe liczby.'
Ale nieważne - jeżeli dane w tabeli 2 zawierają tylko liczby, które są też w tabeli 1, to może lepiej zrób od razu dla dwóch tabel w taki sposób:
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nadal mi to nie działa. Może podam tutaj mój konkretny przykład.
W tabeli posty kolumna poster_id ma być identyczna jak w tabeli users kolumna id. Kolumna id musi być przenumerowana (w tym przypadku od 1 do 72) i z nią wartości w kolumnie poster_id. Tutaj zrzut fragmentu bazy: https://gist.github.com/1341451 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A rozważałeś zastosowanie kluczy obcych z ON UPDATE CASCADE?
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 16.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie nie bardzo wiem jak to ugryźć...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:38 |