webForumDet fria alternativet

Separera sökord med komma

Databaser & SQL

7 svar · 425 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena!

Har sökt här efter ett svar på mitt problem, men söker troligtvis efter fel saker.

Jag ska göra en sökning mot ett fält i min databas, fältet heter "Hiss_Karta" och där lagras kartpositioner, såsom tex. "28C2" eller "05B1".
Nu vill jag kunna söka på flera kartpositioner samtidigt, sen gruppera efter Karta, så att alla adresser som ligger i ruta "28C3" hamnar efter varann och sorteras efter Adress.

Helst vill jag separera adresserna med komma, så att jag i mitt sökfält kan skriva "28C2, 28C3" och alla dessa visas.
Jag använder Access och har nu problem med först separationen av sökorden samt grupperingen.

Tabellen heter "tbl_hiss" och Fälten som ska visas heter:

Hiss_ID
Hiss_Adress
Hiss_Uppg
Hiss_Ovr_Addr
Hiss_Portkod
Hiss_Nycklar
Hiss_Karta
Hiss_Omr_Ort

Sen ska allt alltså grupperas efter Karta och sedan sorteras på Adressen.

Tack!

Medlem sedan dec. 200012 464 inlägg
#2
select Hiss_ID,
Hiss_Adress,
Hiss_Uppg,
Hiss_Ovr_Addr,
Hiss_Portkod,
Hiss_Nycklar,
Hiss_Karta,
Hiss_Omr_Ort 
from tbl_hiss
where hiss_karta in ('28C2', '28C3')
order by hiss_karta,hiss_adress

Förstår inte vad du menar med att gruppera på karta.
where

Medlem sedan feb. 20034 441 inlägg
#3

LarsG skrev:

Förstår inte vad du menar med att gruppera på karta.

Alltså jag vill får resultat enl. föjande:

gatan1       28C3
gatan3       28C3
gatan5       28C3

gatan2       42B2
gatan4       42B2
gatan6       42B2

Men sen har jag ett formulär, där jag vill fylla i olika "kartrutor" i ett och samma fält, separerat med komma.
Jag ska alltså fylla i ett formulärfält, där ska detta formulär postas i ett nytt fönster och resultatet skall visas.
Jag kan antingen skrivka 28C3, 24B2, 54G6 eller kanske bara 05F4 i rutan.

Klart & Tydligt?

Medlem sedan dec. 200012 464 inlägg
#4

En sådan gruppering skulle jag inte göra i SQL. Hantera det i presentationslagret.

Medlem sedan feb. 20034 441 inlägg
#5

Hmm, ok, men hur ska själva frågan se ut för att få fram träffarna?
Jag provade att ange:

42B2, 28C4

I mitt sökfält, men då får jag inga träffar (när jag använder IN('')). Anger jag därimot bara "42B2" så hittar den rätt.

Det är alltså koden till det jag behöver hjälp med, separera sökorden vid varje kommatecken och sen frågan.

Medlem sedan juni 200032 967 inlägg
#6

Du måste ha apostrofer runt varje värde som du ska ha i IN(). Om du anger

42B2, 28C4

i sökrutan måste du alltså se till att det är apostrofer runt. Om man använder asp/vbscript kan man göra så här för att se till att apostroferna hamnar rätt.

str = request.form("whatever")
vTmp = split(str, ", ")
str = "'" & join (vTmp, "', '") & "'"
Medlem sedan feb. 20034 441 inlägg
#7

Tack @nders, ska kolla lite mer på det där imorrn på jobbet. Tycker iaf. att det ser lovande ut, sen är det bara att köra
...WHERE Hiss_Karta IN(" & str & ")", right??

Medlem sedan juni 200032 967 inlägg
#8

Jepp, precis så! :)

448 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
309 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)