---
title: "Hjälp med att skapa en smidigare sql-fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/166821-hjälp-med-att-skapa-en-smidigare-sql-fråga"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "annesophie"
published: "2007-11-30T09:21:15.000Z"
updated: "2007-11-30T10:16:10.000Z"
replies: 4
views: 753
page: 1
pages: 1
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/166821-hjälp-med-att-skapa-en-smidigare-sql-fråga"
---

# Hjälp med att skapa en smidigare sql-fråga

## #1 — annesophie, 2007-11-30T09:21Z

Jag behöver hjälp med att göra om en väldigt lång och omständig SQL-fråga. 
Antar att jag gör detta på ett riktigt rookie-vis och att det naturligtvis måste finnas ett snyggare och enklare 
sätt att få fram informationen.

Frågan hör samman med en fritextsök (i en Access-databas), och tanken är att man söker igenom vissa celler i 
en produkttabell efter sökordet.

```
sql = "SELECT * FROM products WHERE archive = 'NO' AND product LIKE '%"&question&"%' OR ID LIKE '%"&question&"%' OR powerclass LIKE '%"&question&"%' OR type LIKE '%"&question&"%' OR outputs LIKE '%"&question&"%' OR features LIKE '%"&question&"%' OR specification LIKE '%"&question&"%' OR supplier LIKE '%"&question&"%' OR technology LIKE '%"&question&"%' OR applicationArea LIKE '%"&question&"%' ORDER BY product ASC;"
```

 

Ett problem...
Nu är det så att det i produkttabellen även finns arkiverade produkter (som absolut inte får visas i ett sökresultat).
I tabellen finns alltså (text)fältet **archive** som markeras med ett **YES** eller **NO** baserat på produktens status.

Skriver jag som ovan så får jag fram även arkiverade produkter i en sökning, trots archive = 'NO'.

Hur katten kortar man ner detta och gör det snyggare samt visar endast produkter som är markerade med NO?

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

## #2 — @nders, 2007-11-30T09:25Z

Det har att göra med att or är en ganska lös operator.
Villkoret *Archive='NO'* gäller bara i kombination med *product LIKE '%"&question&"%'*. Problemet är lätt löst genom att gruppa alla dina or-villkor i sökningen med en parentes:

```
sql = "SELECT * FROM products WHERE archive = 'NO' AND (product LIKE '%"&question&"%' OR ID LIKE '%"&question&"%' OR powerclass LIKE '%"&question&"%' OR type LIKE '%"&question&"%' OR outputs LIKE '%"&question&"%' OR features LIKE '%"&question&"%' OR specification LIKE '%"&question&"%' OR supplier LIKE '%"&question&"%' OR technology LIKE '%"&question&"%' OR applicationArea LIKE '%"&question&"%') ORDER BY product ASC;"
```

mvh

edit: korta ner frågan kan bli svårt - men jag hade delat upp den på flera rader så den blir mer lättläst.

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

## #3 — annesophie, 2007-11-30T09:28Z

> **@nders skrev:**
>
> Det har att göra med att or är en ganska lös operator.
> Villkoret *Archive='NO'* gäller bara i kombination med *product LIKE '%"&question&"%'*. Problemet är lätt löst genom att gruppa alla dina or-villkor i sökningen med en parentes:
>
> ```
> sql = "SELECT * FROM products WHERE archive = 'NO' AND (product LIKE '%"&question&"%' OR ID LIKE '%"&question&"%' OR powerclass LIKE '%"&question&"%' OR type LIKE '%"&question&"%' OR outputs LIKE '%"&question&"%' OR features LIKE '%"&question&"%' OR specification LIKE '%"&question&"%' OR supplier LIKE '%"&question&"%' OR technology LIKE '%"&question&"%' OR applicationArea LIKE '%"&question&"%') ORDER BY product ASC;"
> ```
>
> mvh

Men vad enkelt det kan vara då... 
@nders, jag fortsätter år efter år att vara så tacksam för din hjälp. Utan dig skulle mitt liv vara väldigt mycket mer omständigt.   :birp 

Kan man skriva en sådan här SQL-fråga på ett smidigare/kortare sätt då?

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

## #4 — @nders, 2007-11-30T09:29Z

> Kan man skriva en sådan här SQL-fråga på ett smidigare/kortare sätt då?

Njae, se min redigering ovan. :)

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

## #5 — Koplik, 2007-11-30T10:16Z

Om du kör SQL Server 2005, så kan du kanske prova detta:
<http://technet.microsoft.com/en-us/library/ms142488.aspx>

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/166821-hjälp-med-att-skapa-en-smidigare-sql-fråga
