31. august 2004 - 12:39Der er
13 kommentarer og 1 løsning
Afkrydsningsfelter i formular til forespørgsel
Jeg har en database over kontaktpersoner kategoriseret efter type. Hver kontaktperson kan godt have mere end en type.
Databasen indeholder tabellerne - Kontaktpersoner - Kontaktpersontyper - Typerelation
Det skal være muligt at lave udtræk af adresser efter valg af en eller flere kontaktpersontyper. Er der tilknyttet flere valgte kontaktpersontyper til en person, skal denne person kun have én label.
Jeg har lavet en formular med en masse afkrydsningsfelter - et til hver kontaktpersontype.
Jeg vil gerne have hjælp til både forespørgslen og til hvordan den sættes sammen med formularen.
Et afkrydsningsfelt har som default værdien 0, og et kryds i formularen har værdien -1, svarende til sand. I din forespørgsel benytter du så kriteriet :
SELECT Kontaktpersoner.KontaktpersonId, Kontaktpersoner.Navn, Kontaktpersontyper.KontaktpersontypeId FROM Kontaktpersoner INNER JOIN Kontaktpersontyper ON Kontaktpersoner.KontaktpersonId = Kontaktpersontyper.KontaktpersonId WHERE (((Kontaktpersontyper.KontaktpersontypeId)=-1));
Har omskrivet det til nedenstående for at få det til at virke. Mit problem er desuden, at det skal være muligt at vælge flere typer på en gang, men at den samme person kun skal komme frem én gang hvis personen er type 1 og 2 og hvis der søges på 1 og 2. Desuden skal det være muligt at søge på op til 10-20 typer på samme tid.
SELECT * FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId WHERE (((Typerelation.KontaktpersontypeId)=2));
Så skal du foretage en select på personoplysninger
SELECT First(Kontaktpersoner.KontaktpersonId) AS KontaktpersonId, First(Kontaktpersoner.Navn) AS Navn FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId WHERE (((Typerelation.KontaktpersontypeId)=1)Or(Typerelation.KontaktpersontypeId)=2));
SELECT Kontaktpersoner.KontaktpersonId AS KontaktpersonId, Kontaktpersoner.Adresse AS Adresse FROM Kontaktpersoner INNER JOIN Typerelation ON Kontaktpersoner.KontaktpersonId = Typerelation.KontaktpersonId WHERE (((Typerelation.KontaktpersontypeId)=2 Or (Typerelation.KontaktpersontypeId)=3)) GROUP BY Kontaktpersoner.KontaktpersonId, Kontaktpersoner.Adresse;
Anden del af spørgsmålet fandt jeg i øvrigt selv ud af.
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.