lørdag, januar 23, 2021

Flytte i MySQL db

Daily Rush Debat Programmering Flytte i MySQL db

  • Dette indlæg indeholder 7 kommentarer, har 3 deltagere og blev senest opdateret af  papa62 for 12 år siden.
  • Forfatter
    Emne
  • #0

    papa62
    Bruger
    157 indlæg
    Offline

    Hejsa..

    Jeg har i sin tid dummet mig og lavet en database hvor brugere får nogle points.
    Dengang jeg lavede det, blev der tilføjet en ny række per point brugeren fik.
    Ex:
    ID 1 BRUGER 34
    ID 2 BRUGER 34
    ID 3 BRUGER 45
    ID 4 BRUGER 34

    Så kan jeg jo med en simpel mysql_num_rows se hvor mange points bruger 34 har.

    Nu er jeg så blevet enig med mig selv om at det er tåbeligt, så jeg har ændret mine scripts (php), og added et felt der hedder amount, som så skal updates når en bruger får et point.

    Jeg skal så på en eller anden måde have overflyttet fra den gamle tabel til den nye.. Altså lave et script der tæller mysql_num_rows, og ligger det sammen for at smide det ind i den nye tabel.

    Problemet er jeg er lidt blank på hvordan jeg skal gøre.. Nogen ideer derude?

    Mange tak

Viser 7 kommentarer - 1 til 7 (af 7 i alt)
  • Forfatter
    Kommentarer
  • #1

    Picco
    Bruger
    4.216 indlæg
    Offline

    Noget i stil med dette kan gøre det:

    INSERT INTO NyTabel SELECT BrugerID, COUNT(*) FROM GammelTabel GROUP BY BrugerID

    Hvis ellers jeg forstår ting rigtigt.

    "Kind of like a drunken Batman with a huge cock."

    #2

    Atheist
    Bruger
    4.877 indlæg
    Offline

    jeg har ikke lige løsningen til dig, men et godt råd er at tage en backup inden du går i gang…

    Jeg har engang mistet en tabel med 3000+ rækker fordi jeg lige skulle lave om på hvordan datoer blev registreret…

    Ja, jeg er en klovn.

    Growing old is mandatory, groving up is optional.

    #3

    papa62
    Bruger
    157 indlæg
    Offline

    #1
    Kan du udspecificere dit eksempel? Hvor i ligger “amount” så ?

    #4

    Picco
    Bruger
    4.216 indlæg
    Offline

    #3: Jeg antager at du har en tabel, der indeholder én kolonne, som er et BrugerID. Tabellen indeholder dermed et antal rækker pr. bruger, svarende til brugerens point.

    Ved at SELECTe BrugerID og gruppere på dette, fås COUNT(*), som bliver antallet af point pr. bruger. Dette indsættes så i en ny tabel.

    Men måske har jeg misforstået hvordan den gamle tabel ser ud.

    "Kind of like a drunken Batman with a huge cock."

    #5

    papa62
    Bruger
    157 indlæg
    Offline

    Nej nej det er helt korrekt..
    Det er mig der har glemt at sige jeg er newbie

    Jeg mangler blot at gennemskue hvordan jeg skal indsætte..

    Den nye tabel hedder så

    ID — BRUGERID — AMOUNT

    Altså så amount skal have en værdi (antallet af samme brugerid i den gamle db)

    #6

    Picco
    Bruger
    4.216 indlæg
    Offline

    #5: Du kan angive hvilke kolonner de nye værdier skal ind i ved at sætte dem i parantes efter det første tabelnavn, f.eks.:

    INSERT INTO NyTabel (BRUGERID, AMOUNT) SELECT BrugerID, COUNT(*) FROM GammelTabel GROUP BY BrugerID

    "Kind of like a drunken Batman with a huge cock."

    #7

    papa62
    Bruger
    157 indlæg
    Offline

    Fantastisk Nu er jeg med, og det virker fandme også..

    Jeg siger mange mange tak

    Og #2 ja, jeg har også dummet mig et par gange, det er noget rigtig rigtig lort, især når der er ved at være fyldt godt op i ens db

Viser 7 kommentarer - 1 til 7 (af 7 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.