Avatar billede tobby Nybegynder
06. februar 2002 - 00:26 Der er 3 kommentarer og
1 løsning

Søgning i database - nu er jeg sgu gået helt kold...

En tabel (Kategori_Produkter) i en DB indeholder følgende:

ID, Kategori_Navn_ID, ProduktID og TrueFalse
ID er bare autonummerering

Kategori_Navn_ID kommer fra en anden tabel indeholdende Kategorier (sjovt nok)

ProduktID henviser til en anden tabel - den som brugeren skal se.

TrueFalse er bare et Yes/No felt.

Jeg har en søgeside, hvor brugeren kan sætte flueben i en eller flere kategorier.

Spørgsmålet er nu: Hvordan laver jeg en søgning, der finder de ProduktID'er der indeholder den/de afkrydsede felter?

Det skal siges at der i Kategori_Produkter er en linie for HVER kategori for HVERT ProduktID.

- Håber I fatter det?!
Avatar billede Slettet bruger
06. februar 2002 - 00:30 #1
Lytter lige med her...
Avatar billede sunezapa Nybegynder
06. februar 2002 - 01:48 #2
1. Du behøver ikke ha et TrueFalse-felt.
Hvis der er en record med kombinationen KategoriID og ProduktID
så er der "true", hvis ikke så er der "false" ;-)
Istedet for records med værdien FALSe så er der blot "ingen record"...
eller har jeg misforstået noget?

2. SQL-søgning
FORUDSAT: alle checkboxe er navngivet med "chk" som første 3 bogstaver.
<%
sql= "SELECT * from tblProdukter WHERE "
for each checkbox in request.QueryString
if left(checkbox.name,3)="chk" then
  sql=sql& " ProductID='" & request(checkbox) & "' OR "
end if
next
sql= left(sql,len(sql)-3)  'fjern det sidste "OR "
%>

Hvis du insisterer på at ha' TrueFalse-feltet og records med dette til False,
så må der tilføjes " AND TrueFalse " plus en parentes - for hver linie...
fanger du den?
Avatar billede askhoej Praktikant
06. februar 2002 - 09:48 #3
Noget i denne her retning:

SELECT k.navn, p.navn
FROM kategorier k, produkt p, kategori_produkter kp
WHERE k.id = kp.kategori_navn_id
AND p.id = kp.ProduktID
AND kp.kategori_navn_id IN (SELECT k.id FROM kategorier k WHERE k.id = #ID 1 fra checkbox# OR k.id = #ID 2 fra checkbox# osv.")
Avatar billede tobby Nybegynder
06. februar 2002 - 12:18 #4
Nix venner! - Det skal se sådan ud:

SELECT * FROM Produkter WHERE ID in (SELECT ProduktID FROM Kategori_Produkter WHERE (Kategori_Navn_ID = 5 OR Kategori_Navn_ID = 7) AND TrueFalse = True GROUP BY ProduktID HAVING count(*) = 2 )

Zyber gav en hånd.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester