Jeg har fornøjelsen af videreudvikle på et udokumenteret system. De benyttes
en MS-SQL database, der bl.a. indeholder tre tabeller med henholdsvis
kategorier, underkategorier og underunderkategorier. Jeg har nu behov for at
lave et webinterface der kan foretage en søgning i disse:
MiscTopics (aktuelle felter: MiscTopicId, MiscTopicName)
MiscSubTopics (aktuelle felter: MiscSubTopicId, MiscSubTopicName,
MiscTopicId)
MiscSubSubTopics (aktuelle felter: MiscSubSubTopicId, MiscSubSubTopicName,
MiscSubTopicId)
Topics kan have SubTopics (men det er ikke nødvendigvis tilfældet). På
tilsvarende vis kan MiscSubTopics have MiscSubSubTopics.
Det af brugeren indtastede "søgeord" har jeg i variablen strKriterie.
Jeg forsøger at lave én query der kan finde kategorier (MiscTopicName) der
indeholder strKriterie (Like %strKriterie%) samt matchede kategorier's
(MiscTopicName) eventuelle underkategorier (MiscSubTopics) og disses
eventuelle underunderkategorier (MiscSubSubTopics).
Desuden har jeg brug for at få finde underkategorier (MiscSubTopicName) der
indeholder strKriterie (Like %strKriterie%) samt disses eventuelle
underunderkategorier (MiscSubSubTopics). Jeg har også brug for navnet på
MiscSubTopics.MiscTopicId ved matchede underkategorier.
Slutteligt skal jeg også finde de underunderkategorier (MiscSubSubTopicName)
der indeholder strKriterie (Like %strKriterie%). For hver matched
underunderkategori har jeg brug for at kende navn på både kategorien og
underkategorien hvori den matchede underunderkategorien befinder sig (for at
kunne udskrive dem på overskuelig vis for brugeren).
Jeg vil gerne gøre ovenstående på så effektiv vis som muligt, men er løbet
lidt sur i det. Jeg er vant til at lave Select-forespørgsler der involverer
flere tabeller, men har indtil nu kun nået at læse en smule om joins
(diverse typer) og subqueries. Jeg har desværre ikke mulighed for at sætte
mig ind i alle facetter af både diverse typer joins og subqueries før jeg
laver min løsning færdig, så uden hjælp herfra ender jeg vist i en meget
kluntet løsning med adskillige funktioner, regulære udtryk og sql kald der
tilsammen så leverer ovenstående på langsommelig vis.
Jeg håber at nogen kan pege mig i den rigtige retning. Det optimale vil
naturligvis være konkret kode der enten løser mit problem eller giver et
eksempel på hvordan jeg skal angribe det. Men også svar om at det
eksempelvis er inner eller outer joins, subqueries eller noget helt tredje
(specifikt :P) jeg skal kigge på vil blive modtaget med kyshånd.
Venlig hilsen
Klaus Lyngsø
|