18. april 2006 - 22:08Der er
8 kommentarer og 1 løsning
Inkluder "SQL variable" i LIKE statement
Hej,
Jeg sidder og roder lidt med noget SQL, og kan ikke helt magte opgaven :)
select k.id, count(o.id) as antal from opskrifter o, opskrifter_kategorier k where (o.kategori like k.id) group by k.id order by antal desc
Følgende statement virker fint. Problemet er bare, at k.id er en varchar, der indeholder forskellige id'er på formen "3, 7, 9". For at finde alle rækker der indeholder et eksakt ID, kan man skrive:
(kategori LIKE '$id,%' OR kategori LIKE '% $id,%' OR kategori LIKE '%$id')
Hvilket også virker ganske fint. Nu vil jeg så gerne have sat disse to sammen, men kan ikke rigtig finde ud af det. Alle steder i den sidste sætning, skal $id skiftes ud med k.id. Men, hvis bare skriver f.eks. 'k.id,%', så opfattes k.id som en string, og ikke som en variable.
Ok, ok, du har garderet dig med 3 "LIKE"-er, jeg så kun den sidste. Men det er ikke en god måde at gøre det på, hvis du ønsker effektivitet, og som du opdager, kan man ikke bruge reglementerede SQL-sætninger til det.
Jeps, der kan være meget kode mellem to sql-sætninger. Der kan også være for meget, hvilket der er på den nuværende side. Derfor prøver jeg at optimere, så mest muligt ligger i SQL.
Så, jeg er gået i gang med at lave nogle flere tabeller :)
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.