webForumDet fria alternativet

Sökning i två tabeller

Databaser & SQLur Databashanterare & SQL

6 svar · 289 visningar · startad av henkepenka

henkepenkaMedlem sedan sep. 2002125 inlägg
#1

Hej!
Jag har ett problem!

Jag har två stycken tabeller i databasen (mySQL). Den ena heter user och innehåller tex. userId | userLogin| userName | userPass osv...

Den andra tabellen heter info och innehåller följande kolumner: Id | Namn | Userid | Typ

Userid i tabellen info är samma som userId i tabellen user. Där är kopplingen mellan dem.

Problemet är att när jag söker på tex "hen" i userName (ska finnas 3 st träffar), hittas bara 2. Detta beror på att dessa två har poster i info-tabellen, det har inte den tredje. Hur ska min kod se ut? Nedan följer min nuvarande kod:

SQL = "SELECT user.userLogin, user.userOnline, user.userId, user.userPostort, user.userCountry, user.userLatestlogin, user.userCountLogin FROM user INNER JOIN info ON user.userId = info.Userid Where user.userId <> ''"
If Request.QueryString("userName") <> "" Then
    SQL = SQL & " And user.userName Like '%" & Request.QueryString("userName") & "%'"
End If
If Request.QueryString("userLogin") <> "" Then
    SQL = SQL & " And user.userLogin Like '%" & Request.QueryString("userLogin") & "%'"
End If
If Request.QueryString("userEmail") <> "" Then
    SQL = SQL & " And user.userEmail Like '%" & Request.QueryString("userEmail") & "%'"
End If
If Request.QueryString("userPostort") <> "" Then
    SQL = SQL & " And user.userPostort Like '%" & Request.QueryString("userPostort") & "%'"
End If
If Request.QueryString("userCountry") <> "" Then
    SQL = SQL & " And user.userCountry Like '%" & Request.QueryString("userCountry") & "%'"
End If
If Request.QueryString("userLanguage") <> "" Then
    SQL = SQL & " And user.userLanguage Like '%" & Request.QueryString("userLanguage") & "%'"
End If

If Request.QueryString("Invfas1") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invfas1") & "%'"
End If
If Request.QueryString("Invbehov1") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invbehov1") & "%'"
End If
If Request.QueryString("Innovation1") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Innovation1") & "%'"
End If
If Request.QueryString("Bransch1") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch1") & "%'"
End If
If Request.QueryString("Geografi1") <> "" Then
    SQL = SQL & " Or info.Namn Like '%" & Request.QueryString("Geografi1") & "%'"
End If
If Request.QueryString("Sprak1") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak1") & "%'"
End If

If Request.QueryString("Invfas2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invfas2") & "%'"
End If
If Request.QueryString("Invbehov2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invbehov2") & "%'"
End If
If Request.QueryString("Innovation2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Innovation2") & "%'"
End If
If Request.QueryString("Bransch2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch2") & "%'"
End If
If Request.QueryString("Geografi2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi2") & "%'"
End If
If Request.QueryString("Sprak2") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak2") & "%'"
End If

If Request.QueryString("Bransch3") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch3") & "%'"
End If
If Request.QueryString("Geografi3") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi3") & "%'"
End If
If Request.QueryString("Befattning3") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Befattning3") & "%'"
End If
If Request.QueryString("Sprak3") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak3") & "%'"
End If

If Request.QueryString("Bransch4") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch4") & "%'"
End If
If Request.QueryString("Geografi4") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi4") & "%'"
End If
If Request.QueryString("Befattning4") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Befattning4") & "%'"
End If
If Request.QueryString("Sprak4") <> "" Then
    SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak4") & "%'"
End If

SQL = SQL & " Order By user.userId"

Set users = Com.execute(SQL)

Tack på förhand!

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Byt

FROM user INNER JOIN info

mot

FROM user left outer JOIN info
henkepenkaMedlem sedan sep. 2002125 inlägg
#3

Nu uppstår ett annat problem:

Problemet är att när jag söker på tex "hen" i userName (ska finnas 3 st träffar), hittas 3 användare, men en av användarna hittas 5 gånger...detta beror på att den användaren har 5 poster i info-tabellen.

henkepenkaMedlem sedan sep. 2002125 inlägg
#4

löste det med Distinct...

henkepenkaMedlem sedan sep. 2002125 inlägg
#5

Men om Invfas1 = "Starta upp" och Invbehov1 = "0-1" så hittas inga träffar...
...Beror ju på att vilkoret blir And info.Namn Like '%Starta upp%' And info.Namn Like '%0-1%'...

...det vilkoret kan ju inte uppstå...hur ska jag lösa detta?

henkepenkaMedlem sedan sep. 2002125 inlägg
#6

Ingen som vet hur jag ska göra med min sökning?

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Du får väl byta från and till or (och hålla reda på parenteserna). Du behöver även flytta alla villkor på info-tabellen från where till on.

552 ms totalt · 3 externa anrop · v20260731065814-full.c74b5be1
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
548 ms — hämta tråd, inlägg och bilagor (db)