|
| SQL forespørgelse Fra : Michael Jakobsen |
Dato : 30-11-01 23:25 |
|
Nu må jeg have noget hjælp, jeg føler jeg har prøvet alt og har
efterhånden nok stirret mig blind på nedenstående.
Jeg har en database, som indeholder en tabel med nogle produkter som
hver især kun er til salg i en vis periode, f.eks fra uge 3 til uge
12.
Hvert produkt har 2 kolonner med henholdsvis en fra_uge og en til_uge.
Brugeren skal så kunne vælge, at få oplyst hvilke produkter der er til
salg i en given periode, og valget foregår via 2 combobokse, en
valg_fra og en valg_til.
Nu kommer problemmet så, at få udtrukket de produkter der falder i den
forespurgte periode.
Er der én eller anden der kan hjælpe ?
Jeg håber spørgsmålet er tydeligt nok, ellers er i mere end velkommen
til at få nærmere oplysninger.
På forhånd tak.
/Goose
--
<URL:mailto:webmaster@goose.dk>
<URL: http://www.goose.dk>
| |
Thomas Nielsen (01-12-2001)
| Kommentar Fra : Thomas Nielsen |
Dato : 01-12-01 14:46 |
|
"Michael Jakobsen" <admin@goose.dk> wrote in message
news:4b1g0u4g9hr2r33mjau52v8sje2nsgdcqg@4ax.com...
> Nu må jeg have noget hjælp, jeg føler jeg har prøvet alt og har
> efterhånden nok stirret mig blind på nedenstående.
> Jeg har en database, som indeholder en tabel med nogle produkter som
> hver især kun er til salg i en vis periode, f.eks fra uge 3 til uge
> 12.
> Hvert produkt har 2 kolonner med henholdsvis en fra_uge og en til_uge.
> Brugeren skal så kunne vælge, at få oplyst hvilke produkter der er til
> salg i en given periode, og valget foregår via 2 combobokse, en
> valg_fra og en valg_til.
> Nu kommer problemmet så, at få udtrukket de produkter der falder i den
> forespurgte periode.
> Er der én eller anden der kan hjælpe ?
> Jeg håber spørgsmålet er tydeligt nok, ellers er i mere end velkommen
> til at få nærmere oplysninger.
> På forhånd tak.
SQL = "SELECT * FROM produkter WHERE start_uge >= '" & StartUge & "' AND
slut_uge <= '" & SlutUge & "'
Skal skal så lige inden definere StartUge og SlutUge.
/Thomas
| |
Michael Jakobsen (02-12-2001)
| Kommentar Fra : Michael Jakobsen |
Dato : 02-12-01 19:25 |
|
On Sat, 1 Dec 2001 14:46:12 +0100, "Thomas Nielsen" <thomas@websup.dk>
wrote:
>SQL = "SELECT * FROM produkter WHERE start_uge >= '" & StartUge & "' AND
>slut_uge <= '" & SlutUge & "'
Dette har jeg prøvet, og det virker ikke helt efter hensigten, og
det er nemmest med et eksempel:
Hvis en vare har en start i uge 1 og en slut i uge 5, så virker det
ikke hvis man ønsker at få vist produkter der også sælges i 2, hvilket
den ovenstående jo gør ?
/Goose
--
<URL:mailto:webmaster@goose.dk>
<URL: http://www.goose.dk>
| |
Jonathan Stein (02-12-2001)
| Kommentar Fra : Jonathan Stein |
Dato : 02-12-01 20:48 |
|
Michael Jakobsen wrote:
> >SQL = "SELECT * FROM produkter WHERE start_uge >= '" & StartUge & "' AND
> >slut_uge <= '" & SlutUge & "'
> Dette har jeg prøvet, og det virker ikke helt efter hensigten, og
> det er nemmest med et eksempel:
> Hvis en vare har en start i uge 1 og en slut i uge 5, så virker det
> ikke hvis man ønsker at få vist produkter der også sælges i 2, hvilket
> den ovenstående jo gør ?
Har du prøvet at vende ulighedstegnene?
M.v.h.
Jonathan
--
Start med PHP, Perl eller JSP uden at omskrive al din gamle ASP-kode.
jsp-hotel.dk tilbyder nu Chili!Soft ASP på alle hoteller.
http://www.jsp-hotel.dk/
| |
Michael Jakobsen (02-12-2001)
| Kommentar Fra : Michael Jakobsen |
Dato : 02-12-01 23:52 |
|
On Sun, 02 Dec 2001 20:47:33 +0100, Jonathan Stein <jstein@image.dk>
wrote:
> Har du prøvet at vende ulighedstegnene?
Ja se, det hjalp jo en del på det, dog er den stadigvæk gal hvis jeg
f.eks. har et produkt der er til salg i uge 2-20 og jeg søger efter
uge 3-21, så kommer produktet ikke frem ?
Jeg er ikke sikker på andet, end at der skal bruges en "BETWEEN" et
eller andet sted, jeg kan bare ikke se hvor ?
/Goose
--
<URL:mailto:webmaster@goose.dk>
<URL: http://www.goose.dk>
| |
Jonathan Stein (03-12-2001)
| Kommentar Fra : Jonathan Stein |
Dato : 03-12-01 18:15 |
|
Michael Jakobsen wrote:
> > Har du prøvet at vende ulighedstegnene?
> Ja se, det hjalp jo en del på det, dog er den stadigvæk gal hvis jeg
> f.eks. har et produkt der er til salg i uge 2-20 og jeg søger efter
> uge 3-21, så kommer produktet ikke frem ?
> Jeg er ikke sikker på andet, end at der skal bruges en "BETWEEN" et
> eller andet sted, jeg kan bare ikke se hvor ?
Du vil altså søge på poster, hvor startUge eller SlutUger (eller
begge) ligger i intervallet!
Lad os sige, at vi vil vise tilbud i perioden fra "forsteUge" til
"sidsteUge". Så skal enten "forsteUge" eller "sidsteUge" ligge i
intervallet mellem start_uge og slut_uge.
Jeg har byttet lidt om på rækkefølgen i forhold til før, SQL'en kommer
til at ligne den måde, jeg har formuleret det ovenfor:
WHERE (forsteUge >= start_uge AND forsteUge <= slut_uge) OR
(sidsteUge >= start_uge AND sidsteUge <= slut_uge)
- det overlades til læseren at lave den præcise opbygning af ovenstående
i det ønskede script-sprog...
M.v.h.
Jonathan
--
Start med PHP, Perl eller JSP uden at omskrive al din gamle ASP-kode.
jsp-hotel.dk tilbyder nu Chili!Soft ASP på alle hoteller.
http://www.jsp-hotel.dk/
| |
Michael Jakobsen (03-12-2001)
| Kommentar Fra : Michael Jakobsen |
Dato : 03-12-01 21:57 |
|
On Mon, 03 Dec 2001 18:14:56 +0100, Jonathan Stein <jstein@image.dk>
wrote:
> Du vil altså søge på poster, hvor startUge eller SlutUger (eller
>begge) ligger i intervallet!
Ja, det er korrekt
> WHERE (forsteUge >= start_uge AND forsteUge <= slut_uge) OR
> (sidsteUge >= start_uge AND sidsteUge <= slut_uge)
tjaee, det ser logisk nok ud, men det rammer altså heller ikke helt.
Jeg har 3 produkter:
prod. 1 sælges fra uge 1-5
prod. 2 sælges fra uge 3-8
prod. 3 sælges fra uge 2-20
Hvis jeg så vælger at få vist produkter ser sælges i perioden uge 4
til uge 8, så er det kun prod.1 og prod.2 der vises, men prod.3 sælges
jo også i denne periode ?
Min streng ser i øjeblikket således ud:
<%
if request.querystring("action") = "show" then
valg_from = request.form("valg_from")
valg_to = request.form("valg_to")
SQLstmt = "SELECT * FROM produkter WHERE (salg_from >= " & valg_from &
" AND salg_from <= " & valg_to & ") OR (salg_to >= " & valg_from &"
AND salg_to <= " & valg_to & ")"
set rs = conn.execute(SQLstmt)
if rs.eof then
%>
Der er desværre ingen salgsklare produkter i den valgte periode
<%
end if
Do while not rs.eof
%>
<A
HREF="produkter.asp?action=details&id=<%=rs("prodID")%>"><%=rs("prodNavn")%></A><BR>
<%
rs.MoveNext
Loop
rs.close
set rs = nothing
conn.close
set conn = nothing
end if
%>
/Goose
--
<URL:mailto:webmaster@goose.dk>
<URL: http://www.goose.dk>
| |
Michael Jakobsen (04-12-2001)
| Kommentar Fra : Michael Jakobsen |
Dato : 04-12-01 08:46 |
|
On Mon, 03 Dec 2001 21:57:00 +0100, Michael Jakobsen <admin@goose.dk>
wrote:
>Min streng ser i øjeblikket således ud:
Jeg har nu fundet en løsning som ser ud til at fungerer, og for de der
har fulgt medi tråden og kommet med forslag, kommer her min nye
streng:
SQLstmt = "SELECT * FROM produkter WHERE (salg_from >= " & valg_from &
" AND salg_from <= " & valg_to & ") OR (salg_to >= " & valg_from &"
AND salg_to <= " & valg_to & ") OR " & valg_from & " between salg_from
AND salg_to OR " & valg_to & " between salg_from AND salg_to"
Jeg takker for de input jeg har fået.
/Goose
--
<URL:mailto:webmaster@goose.dk>
<URL: http://www.goose.dk>
| |
Jonathan Stein (04-12-2001)
| Kommentar Fra : Jonathan Stein |
Dato : 04-12-01 13:51 |
|
Michael Jakobsen wrote:
> > WHERE (forsteUge >= start_uge AND forsteUge <= slut_uge) OR
> > (sidsteUge >= start_uge AND sidsteUge <= slut_uge)
> tjaee, det ser logisk nok ud, men det rammer altså heller ikke helt.
> ...
> SQLstmt = "SELECT * FROM produkter WHERE (salg_from >= " & valg_from &
> " AND salg_from <= " & valg_to & ") OR (salg_to >= " & valg_from &"
> AND salg_to <= " & valg_to & ")"
Jeg kan se du har fået løst problemet, men når logikken er korrekt og resultatet
forkert, må der være noget galt med "oversættelsen" - og det er der også. Du har byttet
om på siderne i ulighederne, men glemt at vende ulighedstegnene.
- Næste problem kommer omkring årsskiftet... I stedet for uge 1, bør du nok bruge
200101, og så fremdeles til uge 52, som bliver 200152. Så virker det hele selv om dine
juletilbud varer lige til påske.
M.v.h.
Jonathan
--
Start med PHP, Perl eller JSP uden at omskrive al din gamle ASP-kode.
jsp-hotel.dk tilbyder nu Chili!Soft ASP på alle hoteller.
http://www.jsp-hotel.dk/
| |
|
|