26. juli 2005 - 11:27Der er
8 kommentarer og 1 løsning
Søgning i en række i MySQL
Okay, muligvis er løsningen ganske enkel.
Jeg har en række i en tabel, der hedder »brugerrank«. I denne række bliver der placeret sæt indeholdende et brugerid (tal nr. 1) og en karakter (tal nr. 2) pr. bruger (fx 1|2). Efterhånden som flere brugersæt bliver lagt i rækken ser den sådan ud: 1|2,3|1,128|5 etc.
Jeg skal nu kunne søge i denne række, så jeg kan se, om et brugerid (tallet til venstre for |) allerede optræder i rækken, da det ikke må stå der to gange.
Ligeledes skal jeg tælle, hvor mange sæt, der er, og jeg skal lægge alle karaktererne (til højre for |) sammen.
Først og fremmest er jeg ikke heeeelt med. Men du har altså sådan en talrække X|X,X|X,XX|X i 1 felt? Hvis det er hver sine felter (at id-feltet er sit eget) så lav feltet unikt og evt. auto-increcement, så kommer der aldrig 2 ens.
Ja, jeg har et felt med X|X,X|X,X|X. ID'et findes i forvejen et andet sted (da det er et brugerID), her skal jeg så bare sikre mig, at hver bruger kun kan afgive karakterer én gang.
Så det er brugerID|karakter,brugerID|karakter etc.
Det var da en afskyelig måde at bruge en database. Hvorfor har du ikke en tabel "bruger_rang" med bruger-id på modtager, bruger-id på afsender samt karakter. Så kan du gøre alt det, du vil, lynhurtigt.
Så skal du se på explode(); Du bliver vist nødt til at gøre det ad 2 gange, først hvor du opdeler efter komma og dernæst efter "|". ( www.php.net/explode )
Men giver da bestemt Barklund ret. Jeg ville helt klar foretrække en tabel med f.eks. brugerid og emneid (hvis det var et emne der skulle gives karakter). Så kan der laves en krydsrefence til den tabel der indeholder selve emnet - hope you get the point :) !
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.