Avatar billede koldy Nybegynder
10. august 2004 - 15:26 Der er 19 kommentarer og
1 løsning

Problemer med en SQL streng der opføre sig meget underligt

Jeg har denne SQL streng til et søge script, men underligt så når jeg køre den for resultaterne ud 6 gange?. når jeg køre SQL strengen i MYSQLfront skriver den dem godt nok kun ud en gang, men den sortere ikke ordenlig efter language id..

SQL strengen ser sådan ud, håber det forklare mit problem forståeligt nok, har bixet med det næsten hele natten.
Avatar billede koldy Nybegynder
10. august 2004 - 15:27 #1
upz glemte vist strengen ;)
SELECT Name, Content, LanguageID, ID FROM tbl_article WHERE LanguageID = 1 AND Content LIKE '%german%' OR Name LIKE '%german%' OR Content LIKE '%german%' AND Name LIKE '%german%'
Avatar billede koldy Nybegynder
10. august 2004 - 15:28 #2
det er når jeg køre strengen via ASP, jeg for 6 resultater.
Avatar billede Slettet bruger
10. august 2004 - 15:30 #3
Jeg tror du skal kigge på dine OR og AND, du udsøger på det samme et par gane, jeg kan ikke helt gennemskue hvad det helt nøjagtig er du vil, du kunne evt. prøve at sætte paranteser om det der hænger sammen.
Avatar billede soes Nybegynder
10. august 2004 - 15:31 #4
det med sortering bør du kunne klare med at tilføje ORDER BY LanguageID til sidst i din sql sætning.
Hvorfor den udskriver resten flere gange kan jeg ikke lige se. Kan det tænkes at det har noget med din asp kode at gøre?
Avatar billede koldy Nybegynder
10. august 2004 - 15:34 #5
jeg kan da lige poste koden her, men synedes jeg har dobbelt tjekket mange gange... Det jeg mente med sortere var ikke sortere efter id, men som du kan se på SQL strengen så vil jeg havde at det er kun artikler med LanguageID = 1 der skal skrives, men de kommer alle sammen med..

her er den fulde kode

<%
Function Search(strg, langid)
    Strg = Replace(strg, "'", "''")
'    SQL = "SELECT Name, Content, ID FROM tbl_article WHERE Name LIKE '%" & strg & "%' AND Content LIKE '%" & strg & "%' OR Content LIKE '%" & strg & "%' AND LanguageID = " & Langid
    SQL2 = "SELECT COUNT(id) as nr FROM tbl_article WHERE Name LIKE '%" & strg & "%' AND Content LIKE '%" & strg & "%' OR Content LIKE '%" & strg & "%' AND LanguageID = " & Langid
    SQL = "SELECT Name, Content, LanguageID, ID FROM tbl_article WHERE LanguageID = 6 AND Content LIKE '%" & strg & "%' OR Name LIKE '%" & strg & "%' OR Content LIKE '%" & strg & "%' AND Name LIKE '%" & strg & "%'"
    Response.write SQL
    Set RsSearch = objConn.Execute(SQL)
    Set RsSearch2 = objConn.Execute(SQL2)
    Rcount = RsSearch2("nr")
    RsSearch2.close
        SQL = "SELECT SearchNonResults, SearchResults, SearchCount FROM tbl_Language WHERE ID=" & Cstr(langid)
        RsSearchlang = objConn.execute(SQL)

        Search = "<H1>" & RsSearchlang("SearchResults") & "</H1><p>"
   
    If RsSearch.EOF Then
        Search = Search & "<h2>" & Replace(RsSearchlang("SearchNonResults"), "#SearchString#", strg) & "</h2>"
   
    Else
        Search = Search & "<h2>" & Replace(Replace(RsSearchlang("SearchCount"), "#SearchCount#", Rcount), "#SearchString#", strg) & "</h2></br>"
       

    Do While Not RsSearch.EOF
       
            Search = Search & "<a href='?article=" & RsSearch("ID") & "&forcus=" & strg & "'><b>" & Search & RsSearch("Name") & "</b><br>"
            If Len(RsSearch("content")) > 50 then
                Search = Search & " " & Left(RsSearch("content"), 50) & "</a></br>"
            Else
                Search = Search & " " & RsSearch("content")
            End If
       
        RsSearch.Movenext
    Loop
       
        RsSearch.Close
       
        Search = Search & "</a></blockquote>"
    End If   
   
End Function
%>
Avatar billede koldy Nybegynder
10. august 2004 - 15:35 #6
how der er 2 SQL strenge, hvor den ene er kommenteret ud, det er en af min detsvære mislykkedes forsøg.
Avatar billede Slettet bruger
10. august 2004 - 15:35 #7
Prøv dette så:
SELECT Name, Content, LanguageID, ID FROM tbl_article WHERE LanguageID = 1 AND (Content LIKE '%german%' OR Name LIKE '%german%' OR Content LIKE '%german%' AND Name LIKE '%german%')
Avatar billede koldy Nybegynder
10. august 2004 - 15:36 #8
betie: jeg vil havde at den skal søge i både name og content
Avatar billede koldy Nybegynder
10. august 2004 - 15:38 #9
ok
Avatar billede Slettet bruger
10. august 2004 - 15:39 #10
Ja det gør den også men for at få alle med languageid 1 ud så er du nødt til at bruge paranteser for at få den bygget rigtigt op. men du kan udelade noget af det du har og så gøre sådan:
SELECT Name, Content, LanguageID, ID FROM tbl_article WHERE LanguageID = 1 AND (Content LIKE '%german%' OR Name LIKE '%german%')

Den tager alle med id 1 OG (content eller name like german)
Avatar billede koldy Nybegynder
10. august 2004 - 15:44 #11
bertie: det hjalp, men stadig et problem med at der kommer vildt mange svar, men det er underligt nok kun ved et sprog, og som du kan se er koden ens for alle sprog, det er bare langid der blir ændret.
Avatar billede koldy Nybegynder
10. august 2004 - 15:45 #12
til den sidst, så blir det jo en eller, det vil sige hvis german opstår i dem begge, så vil den ikke blive medtaget, lidt upraktisk.
Avatar billede koldy Nybegynder
10. august 2004 - 15:47 #13
er lige væk et stykke tid, skal ha brygget en ny kande kaf' ;)
Avatar billede Slettet bruger
10. august 2004 - 16:01 #14
Hvis der står german i både navn og content vil den komme med da den jo er en OR men den skal samtidig have en id 1, med hensyn til at der kommer mange med så er du nok nødt til selv at checke dine data, jeg ved ikke hvor mange der skal være og hvor mange du får ud :-)
Avatar billede Slettet bruger
10. august 2004 - 16:02 #15
Ellers få koden rettet til og post den med en beskrivelse af hvor det nu er galt.
Avatar billede koldy Nybegynder
10. august 2004 - 16:03 #16
mine dataer er som for oven, jeg for samtlig data ca 6 gange.. ja ok, det andet har u da igrunden ret i.. sjovt som hvodet ikke fungere når man ikke sovet.. ;)

men fatter stadig ikke hvorfor den smider data'en ud så mange gange..
Avatar billede Slettet bruger
10. august 2004 - 16:07 #17
Jamen du må da have rettet i koden som jeg skrev 10/08-2004 15:39:55 for at få luget ud i dem der kommer med for mange gange?
Avatar billede koldy Nybegynder
10. august 2004 - 16:14 #18
Jeg fant fejlen, det var fordi jeg inde i loopen af en eller anden grund havde skrevet funktions variablen Search et hav af gange, ja det du skrev virkede perfekt på det andet problem, men det var simpelt min træthed der gjorde at jeg fik så mange resultater.

Jeg takker for hjælpen.

Svar og pointe er dine..
Avatar billede Slettet bruger
10. august 2004 - 16:20 #19
Godt du fik det løst :-)
Avatar billede koldy Nybegynder
10. august 2004 - 16:22 #20
enig..
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