---
title: "Avancerad sökning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/129553-avancerad-sökning"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "henkepenka"
published: "2005-06-07T11:30:54.000Z"
updated: "2005-06-08T07:08:41.000Z"
replies: 23
views: 501
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/129553-avancerad-sökning"
---

# Avancerad sökning

_Sida 1 av 2._

## #1 — henkepenka, 2005-06-07T11:30Z

Hej!

Jag har stora problem med en sökning som jag försökt att få ihop.

Jag har nio tabeller som jag ska söka igenom. Jag vet att databasen (mySQL) är direkt optimerad, eller rättare sagt, den är riktigt dåligt gjord. Men just nu har jag inte tid att ändra på den.

Som sagt, det är nio st tabeller som ska sökas igenom.

I 8 utav dem finns dessa kolumner:

Id, Namn, Userid, Katid

Den 9:nde tabellen är själva usertabellen.

Alla värden från själva sökningen skickas med en länk och ska sedan hämtas upp med hjälp av Request.QueryString.

Såhär ser min kod ut nu...(vet att den är galen)...får den inga träffar skriver den ut de, men om den får en träff, loopar den ut den träffen väldigt många gånger...

```
SQL = "Select info_befattning.Namn, info_befattning.katId, info_bransch.*, info_geografi.*, info_innovation.*, info_invbehov.*, info_invfas.*, info_sprak.*, user.* from info_befattning, info_bransch, info_geografi, info_innovation, info_invbehov, info_invfas, info_kat, info_sprak, user 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_invfas.Namn Like '%" & Request.QueryString("Invfas1") & "%' And info_invfas.Katid = 1"
End If
If Request.QueryString("Invbehov1") <> "" Then
SQL = SQL & " And info_invbehov.Namn Like '%" & Request.QueryString("Invbehov1") & "%' And info_invbehov.Katid = 1"
End If
If Request.QueryString("Innovation1") <> "" Then
SQL = SQL & " And info_innovation.Namn Like '%" & Request.QueryString("Innovation1") & "%' And info_innovation.Katid = 1"
End If
If Request.QueryString("Bransch1") <> "" Then
SQL = SQL & " And info_bransch.Namn Like '%" & Request.QueryString("Bransch1") & "%' And info_bransch.Katid = 1"
End If
If Request.QueryString("Geografi1") <> "" Then
SQL = SQL & " And info_geografi.Namn Like '%" & Request.QueryString("Geografi1") & "%' And info_geografi.Katid = 1"
End If
If Request.QueryString("Sprak1") <> "" Then
SQL = SQL & " And info_sprak.Namn Like '%" & Request.QueryString("Sprak1") & "%' And info_sprak.Katid = 1"
End If
If Request.QueryString("Invfas2") <> "" Then
SQL = SQL & " And info_invfas.Namn Like '%" & Request.QueryString("Invfas2") & "%' And info_invfas.Katid = 2"
End If
If Request.QueryString("Invbehov2") <> "" Then
SQL = SQL & " And info_invbehov.Namn Like '%" & Request.QueryString("Invbehov2") & "%' And info_invbehov.Katid = 2"
End If
If Request.QueryString("Innovation2") <> "" Then
SQL = SQL & " And info_innovation.Namn Like '%" & Request.QueryString("Innovation2") & "%' And info_innovation.Katid = 2"
End If
If Request.QueryString("Bransch2") <> "" Then
SQL = SQL & " And info_bransch.Namn Like '%" & Request.QueryString("Bransch2") & "%' And info_bransch.Katid = 2"
End If
If Request.QueryString("Geografi2") <> "" Then
SQL = SQL & " And info_geografi.Namn Like '%" & Request.QueryString("Geografi2") & "%' And info_geografi.Katid = 2"
End If
If Request.QueryString("Sprak2") <> "" Then
SQL = SQL & " And info_sprak.Namn Like '%" & Request.QueryString("Sprak2") & "%' And info_sprak.Katid = 2"
End If
If Request.QueryString("Bransch3") <> "" Then
SQL = SQL & " And info_bransch.Namn Like '%" & Request.QueryString("Bransch3") & "%' And info_bransch.Katid = 3"
End If
If Request.QueryString("Geografi3") <> "" Then
SQL = SQL & " And info_geografi.Namn Like '%" & Request.QueryString("Geografi3") & "%' And info_geografi.Katid = 3"
End If
If Request.QueryString("Befattning3") <> "" Then
SQL = SQL & " And info_befattning.Namn Like '%" & Request.QueryString("Befattning3") & "%' And info_befattning.Katid = 3"
End If
If Request.QueryString("Sprak3") <> "" Then
SQL = SQL & " And info_sprak.Namn Like '%" & Request.QueryString("Sprak3") & "%' And info_sprak.Katid = 3"
End If
If Request.QueryString("Bransch4") <> "" Then
SQL = SQL & " And info_bransch.Namn Like '%" & Request.QueryString("Bransch4") & "%' And info_bransch.Katid = 4"
End If
If Request.QueryString("Geografi4") <> "" Then
SQL = SQL & " And info_geografi.Namn Like '%" & Request.QueryString("Geografi4") & "%' And info_geografi.Katid = 4"
End If
If Request.QueryString("Befattning4") <> "" Then
SQL = SQL & " And info_befattning.Namn Like '%" & Request.QueryString("Befattning4") & "%' And info_befattning.Katid = 4"
End If
If Request.QueryString("Sprak4") <> "" Then
SQL = SQL & " And info_sprak.Namn Like '%" & Request.QueryString("Sprak4") & "%' And info_sprak.Katid = 4"
End If
SQL = SQL & " Order By user.userId"
Set users = Com.execute(SQL)
```

Några förslag?

Permalänk: https://www.webforum.nu/p/129553

## #2 — henkepenka, 2005-06-07T11:31Z

Ursäkta för den usla formateringen!!

Permalänk: https://www.webforum.nu/p/1625009

## #3 — @nders, 2005-06-07T11:31Z

Förslag 1: redigera koden så den går att läsa här på forumet.

Permalänk: https://www.webforum.nu/p/1625010

## #4 — henkepenka, 2005-06-07T11:36Z

Så...nu är de nog lite lättare att läsa...sorry

Permalänk: https://www.webforum.nu/p/1625011

## #5 — @nders, 2005-06-07T11:39Z

Du har ju ingen join, utan du specificerar ju bara vilka tabeller som det ska hämtas ifrån. Det innebär att alla olika alternativ hämtas.

Varför har du åtta likadana tabeller :q

Permalänk: https://www.webforum.nu/p/1625012

## #6 — henkepenka, 2005-06-07T11:44Z

Hur skulle en join se ut här?

Permalänk: https://www.webforum.nu/p/1625014

## #7 — @nders, 2005-06-07T11:45Z

Hänger tabellerna ihop med varandra överhuvudtaget?
Annars får du göra en UNION.

Permalänk: https://www.webforum.nu/p/1625016

## #8 — henkepenka, 2005-06-07T11:46Z

Alltså...alla de 8 hänger ju ihop med usertabellen. Men de hänger ju inte ihop sinsemellan..

Permalänk: https://www.webforum.nu/p/1625017

## #9 — @nders, 2005-06-07T11:48Z

Vilka fält hänger ihop då, dvs vilka fält ska tabellerna knytas ihop med?

Men varför har du åtta likadana tabeller? Om jag vore du skulle lägga ihop dem till en, det skulle underlätta ofantligt mycket.

Permalänk: https://www.webforum.nu/p/1625019

## #10 — henkepenka, 2005-06-07T12:17Z

OK, ändrat här nu...nu finns det en tabell som heter som heter info. Den innehåller följande:

Id, Namn, Userid, Katid, Typ

Och en tabell som heter user.

Hur ska jag gå tillväga?

Permalänk: https://www.webforum.nu/p/1625032

## #11 — henkepenka, 2005-06-07T12:45Z

Nu ser koden ut såhär:

```
SQL = "SELECT * 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") & "%' And info.Katid = 1"
End If
If Request.QueryString("Invbehov1") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invbehov1") & "%' And info.Katid = 1"
End If
If Request.QueryString("Innovation1") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Innovation1") & "%' And info.Katid = 1"
End If
If Request.QueryString("Bransch1") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch1") & "%' And info.Katid = 1"
End If
If Request.QueryString("Geografi1") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi1") & "%' And info.Katid = 1"
End If
If Request.QueryString("Sprak1") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak1") & "%' And info.Katid = 1"
End If
If Request.QueryString("Invfas2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invfas2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Invbehov2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Invbehov2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Innovation2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Innovation2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Bransch2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Geografi2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Sprak2") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak2") & "%' And info.Katid = 2"
End If
If Request.QueryString("Bransch3") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch3") & "%' And info.Katid = 3"
End If
If Request.QueryString("Geografi3") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi3") & "%' And info.Katid = 3"
End If
If Request.QueryString("Befattning3") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Befattning3") & "%' And info.Katid = 3"
End If
If Request.QueryString("Sprak3") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak3") & "%' And info.Katid = 3"
End If
If Request.QueryString("Bransch4") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Bransch4") & "%' And info.Katid = 4"
End If
If Request.QueryString("Geografi4") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Geografi4") & "%' And info.Katid = 4"
End If
If Request.QueryString("Befattning4") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Befattning4") & "%' And info.Katid = 4"
End If
If Request.QueryString("Sprak4") <> "" Then
SQL = SQL & " And info.Namn Like '%" & Request.QueryString("Sprak4") & "%' And info.Katid = 4"
End If
SQL = SQL & " Order By user.userId"
Set users = Com.execute(SQL)
```

Vad är de som är galet?

Permalänk: https://www.webforum.nu/p/1625056

## #12 — @nders, 2005-06-07T12:46Z

På vilket sätt funkar det inte? Felmeddelande?
Är inte userid numeriskt?
Hur ser färdig SQL-fråga ut?

Permalänk: https://www.webforum.nu/p/1625057

## #13 — henkepenka, 2005-06-07T12:50Z

Det som händer...
i tabellen info ligger det 15 poster med olika värden för Userid = 1.
När man söker på userName = Henrik, som är Userid = 1 får man 15 exakt likadana träffar. 
Söker man på Invfas1 så får man bara 1 träff, men söker man på Invfas1 och Geografi2 (båda finns med UserId = 1) får man ingen träff...

Permalänk: https://www.webforum.nu/p/1625058

## #14 — henkepenka, 2005-06-07T12:52Z

SQL-satsen som blir när man bara söker på userName ser ut såhär:
SELECT \* FROM user INNER JOIN info ON user.userId = info.Userid Where user.userId \<\> '' And user.userName Like '%Henrik%' Order By user.userId

Söker man på Invfas1 och Geografi3 ser SQL-satsen ut såhär:

SELECT \* FROM user INNER JOIN info ON user.userId = info.Userid Where user.userId \<\> '' And info.Namn Like '%Utveckla%' And info.Katid = 1 And info.Namn Like '%Norden%' And info.Katid = 3 Order By user.userId

Permalänk: https://www.webforum.nu/p/1625059

## #15 — @nders, 2005-06-07T12:54Z

Det är inte så konstigt, eftersom du frågar efter poster där Katid är två olika värden samtidigt. Det går inte.

\*) Ska du verkligen söka med olika sökord på alla fält? 
\*) Får man knasiga resultat av en SQL-fråga skall man skriva ut den färdiga frågan för att lättare se vad som är konstigt. (edit: ser att du redigerat in det nu.)

Är du säker på att du vill ha AND-villkor? Borde det inte vara OR, dvs:

```
SELECT * FROM user INNER JOIN info ON user.userId = info.Userid 
Where user.userId <> '' And (info.Namn Like '%Utveckla%' And info.Katid = 1) 
OR (info.Namn Like '%Norden%' And info.Katid = 3) 
Order By user.userId
```

Permalänk: https://www.webforum.nu/p/1625060

## #16 — henkepenka, 2005-06-07T13:12Z

Ja, jag vill ju att den bara ska hitta användare som har Utveckla på Invfas1 och Norden på Geografi3...

Permalänk: https://www.webforum.nu/p/1625068

## #17 — henkepenka, 2005-06-07T13:25Z

Hur kommer det sig att det kommer upp många träffar när jag söker på userName = Henrik när det bara finns 1 sådan post?

Permalänk: https://www.webforum.nu/p/1625071

## #18 — @nders, 2005-06-07T13:29Z

Finns det inte en post per Katid?

Permalänk: https://www.webforum.nu/p/1625074

## #19 — henkepenka, 2005-06-07T13:33Z

Nu har jag gjort om...
...Info innehåller nu:

Id, Namn, Userid, Typ

Sen har jag tagit bort: And info.Katid = 1,2,3,4 bakom varje...

Permalänk: https://www.webforum.nu/p/1625075

## #20 — henkepenka, 2005-06-07T13:38Z

Det kanske är lättare om du ser själva filerna. Jag kan inte skicka dem till dig?

Permalänk: https://www.webforum.nu/p/1625077

---

Tråden på webben: https://www.webforum.nu/amne/asp/129553-avancerad-sökning  
Nästa sida: https://www.webforum.nu/amne/asp/129553-avancerad-sökning/page2.md
