Har brug for at kunne matche op på en kommasepareret i en query, hvis mindst en værdi matcher skal dataen trækkes ud.
Eksempel:
$streng = '1,8,3';
Feltet i db kunne så f.eks. indeholde 2,9,8 og her er en fællesværdi i 8, og query´en skal så returnere data. Kan det overhovedet lade sig gøre direkte i queryen?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Nej synes godt jeg kunne fornemme det :) Men nice nok.. Men da colonne jo kan indholde f.eks. 1,9,3 skal jeg vel vende den og bruge IN, altså $streng_array[$i] IN (colonne), men bliver den for tung?
Jeg tror ikke IN virker, ellers er det nok den som er hurtigst og bedst, du vil med LIKE få for mange forskellige muligeheder, og så vil den ikke kunne kende forskel mellem 21 og 1 hvis du søger efter 1.
Men det helt rigtige måde er at normalisere dine tabeller så du ikke har flere værdier i samme felt. Du vil få alt for mange problemer med flere værdier i samme felt.
Som sagt kan jeg desværre ikke ændre det, men må prøve mig lidt frem.. Tror nu godt IN skal virke, men det bliver selvfølgelig ikke den optimale løsning.
Okay, jeg kan ikke lige følge dig i at det IKKE bliver et problem. Du skal lave så meget ekstra kode for at tilføje eller fjerne et tal fra dit felt at det slet ikke giver mening at bibeholde den struktur for dine tabeller. Og hvis du alligevel begynder at tænke på hvad der er hurtigst for databasen ang. LIKE og IN, så skal du også tage i betrækning at din struktur bestemt også har indflydelse på hvor hurtig og effektiv din database er. At have en database struktur, i et større system, som i det mindste ikke er normaliseret til grad 2 er fuldstændig tåbeligt.
Det ligner en uhensigtsmæssig tilgang. Umiddelbart kunne jeg forestille mig, det bliver en ekstremt skidt performende forespørgsel med alle de LIKE's eller IN's. Uden at vide, hvad du præcist skal lave, er det dog svært at anbefale et alternativ
Jamen da jeg har omkring 3500 gode grunde (poster i db), til ikke at ændre strukturen i databasen, ledte jeg egentlig bare efter en query som nogenlunde kan klare presset. Håbede at en mysql guru kunne komme med et godt løsningsforslag, men det lader til at der ikke er andre forslag end LIKE, eller IN?
Jeg er også meget i tvivl om at IN virker efter hensigten. Og med LIKE kan jeg kun give olebole ret, det vil slet ikke være godt for serveren. Men som sagt der findes ingen alternativer når opbygningen ikke er normaliseret.
wolstrup >> Nej, det er 3500 dårlige grunde ;o) Hvis du laver et lille script, der ændrer din DB, tager det næppe mere end et minut at køre sciptet på DB'en
Jamen der er ingen tvivl om at hvis jeg havde mulighed for at rive hele skidtet ned og starte forfra, ville det være den eneste rigtige løsning. Er desværre ikke så privilegeret, så må have det bedste ud af det med den database der nu foreligger :)
Hehe ole du har ret.. Meen skal jo så hele koden igennem for at se om ændringen laver løjer i den andre steder, og skal lige sige at der er en pænt stor del af koden som ikke er udforsket endnu. Puha, er der virkelig ingen anden vej :)
Nej desværre, det er derfor meget vigtigt at have den rigtige struktur på databasen fra start, og have tænkt alt igennem inden der kodes noget som helst php.
Ja dkfire, tror jeg vil sende denne korrespondance til den tidligere udvikler med din seneste kommentar highlighted :) Der var ellers lige en lille frækkert her man kunne kigge nærmere på http://www.thescripts.com/forum/thread141874.html
"tror jeg vil sende denne korrespondance til den tidligere udvikler" >> "den tidligere indvikler" ville nok være en mere præcis beskrivelse ;o)
Programmering foregår langt hen ad vejen i hovedet - derefter på papir med streger, pile kasser og nussede kommentarer - derefter i et (evt. grafisk) dokumentations program.
Når alt er færdigprogrammeret, skal applikationen bare færdiggøres ved at skrive koden i en tekst editor, så den kan afvikles på serveren :)
- men alt formange begynder der, hvor applikationen burde være færdigprogrammeret ... hvilket præcis er årsagen til, du nu sidder med den gang sovs :o|
"...vigtigt at have den rigtige struktur på databasen fra start, og have tænkt alt igennem..." Jah, der skal nok findes et par små, og trivielle applikationer, hvor det kan lade sig gøre. Vi andre forsøger derimod at designe ud fra forventningen om forandring, og bygger systemet med moduler/lag/mønstre (kært barn ...) så en ændring i fx tabelstrukturen blot giver få og lokale ændringer i koden. Så har man fornøjelsen at lære af sine erfaringer.
Jeg er sikker på vi i alt væsentligt mener det samme, så lad os ikke komme ud i noget med diminutive insekters gøren og laden i indbyrdes tvekønnet samkvem (spm/822750) ;)
Det hjælper ikke spørgeren, som er den eneste der kan afgøre om en tablescan (lineær søgning) ved hver forespørgsel kan forsvares, eller om tiden er bedst brugt på en omkodning.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.