25. maj 2003 - 17:57Der er
6 kommentarer og 1 løsning
Søgning på samme felt i flere tabeller.
Jeg er i gang med at lave en online bookmarks side.
Man lægger bookmarks ind i kategorier, som man selv kan oprette, kategorierne får hver deres tabel "category1", "category2", o.s.v. tabellen catagories holder styr på disse tabellers navne.
nu vil jeg gerne kunne søge efter et bookmark, og jeg gør det at jeg kører en "select id" på categories, og bruger dem til at generere en sqlstreng som denne:
"SELECT category1.name, category2.name, ... FROM category1, category2, ... WHERE category1.name LIKE '%søgestreng%' OR category2.name LIKE '%søgestreng%' ..."
jeg lægger det hele ind i et recordset, men ligegyldigt hvad jeg søger efter så forbliver recordsetet tomt.
Mit forslag: først redesign databasen. Jeg siger det fordi det er uhensigtmæssigt at have så mange tabeller i en database. Det er både besværligt at vedligeholde og det er langsomt, hvis der er mange kategorier. I stedet kan du nøjes med tre tabeller:
Table 1: alle bookmarks Tabel 2: alle kategorier Table 3: link-tabel som kæder kategorierne og bookmarks'ene sammen
Jeg har allerede givet dig den ene (den bedste) løsning. Her kommer så den anden løsning:
"SELECT navn FROM category1 WHERE navn LIKE '%søgestreng%' UNION SELECT navn FROM category2 WHERE navn LIKE '%søgestreng%' UNION SELECT navn FROM category3 WHERE navn LIKE '%søgestreng%'"
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.