23. januar 2004 - 10:34Der er
25 kommentarer og 1 løsning
Hjælp til søge funktion
Hej. Jeg har et lille problem med noget SQL til en søge funktion
Min database ser sådan der ud company id name department id name faktura company faktura_no faktura_date type department type id name
Mit script loop type.id igenne og udskriver så alle de poster fra faktura tablen
Det er også findt nok, jeg får op delt dem i nogle grupper...
Men mit problem er så lige, at jeg godt vel kunne søge i de her små gruppe f.eks. vil jeg godt kun kunne tage alle poster fra faktura tablen fra et firma.
fordi denne sql JOIN'er selv på kryds og tværs: select type.id as type_id, faktura.id as faktura_id, faktura.company from type, faktura where faktura.company = 6
Derfor skal det laves i stil med den JOIN jeg har vist så man selv bestemmer hvilke kolonner der skal JOINes.
Så prøv den JOINer fakture og type tabellerne:
SQL = "select type.id as type_id, faktura.id as faktura_id, faktura.company from faktura left join type on fakture.type=type.id where company = 2"
okey det virkede med det blive lidt underlidt at lave den på den måde... Så jeg har lavet det på den måde at jeg select * from faktura where company = 6 order by type
eller hvis den ikke skal have en where så select * from faktura order by type
men er der en mulighed at kunne order by type.name ?
strSQL = "select * from faktura where company = " & Request.Form("company") & " order by type"
så kommer den til at se sådan her ud? strSQL = "select * from faktura inner join type on fakture.type=type.id order by type.name where company = " & Request.Form("company") & " order by type"
eller hvordan?
men hva med den der søge funktion? eller er det et nyt spg?
Du skal havde samlet order by's efter where, og man kan skrive flere kolonner i order by adskift med komma:
strSQL = "select * from faktura inner join type on fakture.type=type.id where company = " & Request.Form("company") & " order by type.name, fakture.type
Hvis det skal være firma kan man lave en drop-down boks som indeholder alle firma'erne. Det kunne være noget fri søgening hvor man skriver et ord i et input felt. Man kan jo bare bygge flere kolonner på where delen efter behov, eks: http://activedeveloper.dk/aspdigital/kapitel2/search.asp
Mit problem er som jeg skriv "27/01-2004 13:55:26"
firma dato(start) dato(slut) type afdeling
og hvis man skal kunne søge på krys og tværs f.eks
man søger på firma og type men ikke dato og afdeling...
det enste jeg lige kan se er at jeg laver en sql str for vær mulighed men det syns jeg bare er lidt sygt!
Det bliver bare mange strSQL eller hvad nu man skal kalde dem hvis jeg skal tage højtet for alle mulighederne.... Så har du ikke en eller anden samrt ide til hvordan man lige løser det
Ja det kan bygges på som sådan her, antager der nogle søge felter på formen: firma startDato slutDato type afdeling:
strWHERE = "" if Request.Form("firma") <> "" then if strWHERE <> "" then strWHERE = strWHERE & " AND " strWHERE = strWHERE & "(firma = '" & Request.Form("firma") & "')" end if if Request.Form("startdato") <> "" then if strWHERE <> "" then strWHERE = strWHERE & " AND " strWHERE = strWHERE & "(startdato = #" & Request.Form("startdato") & "#)" end if if Request.Form("slutdato") <> "" then if strWHERE <> "" then strWHERE = strWHERE & " AND " strWHERE = strWHERE & "(slutdato = #" & Request.Form("slutdato") & "#)" end if if Request.Form("type") <> "" then if strWHERE <> "" then strWHERE = strWHERE & " AND " strWHERE = strWHERE & "(type= '" & Request.Form("type") & "')" end if if Request.Form("afdeling") <> "" then if strWHERE <> "" then strWHERE = strWHERE & " AND " strWHERE = strWHERE & "(afdeling= '" & Request.Form("afdeling") & "')" end if
Så har man en where del som kan bygges ind i selv SQL'en
strSQL = "select * from faktura inner join type on fakture.type=type.id " if strWHERE <> "" then strSQL = strSQL & " where " & strWHERE strSQL = strSQL & " order by type.name, fakture.type"
jeg har fundet en lille fejl... når jeg så udskriver mit id så virker det ikke rigtig... jeg tror den skriver type.id engang imellen når jeg bare udskriver rs("id")
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.