|
| SQL "betinget" forespørgsel Fra : Jørn Andersen |
Dato : 18-04-01 18:04 |
|
Hej,
Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
[tilbud] (ja/nej) og [tilbudspris].
Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
gælder, bestemmes af ja/nej-feltet [tilbud].
Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
[tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
Det skal bruges til ASP, så jeg kunne selvfølgelig udtrække det hele
og så lave noget if - then - else, men hvis det kunne gøres direkte i
SQL'en, ville det være noget lettere - og sikkert også spare
ressourcer - til glæde for alle
På forhånd tak,
Mvh. Jørn
XFUT: dk.edb.database,
--
Jørn Andersen
Brønshøj
| |
Nils Lastein (18-04-2001)
| Kommentar Fra : Nils Lastein |
Dato : 18-04-01 20:26 |
|
"Jørn Andersen" <jorn.a@email.dk> wrote in message
news:zMjdOmUodWItaY2x8G==eoFi2Boq@4ax.com...
> Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
> [tilbud] (ja/nej) og [tilbudspris].
> Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
> gælder, bestemmes af ja/nej-feltet [tilbud].
>
> Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
> [tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
> hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
Hvis jeg tilbud er "nej" er tilbudspris vel NULL og dermed kan du tillade
sig, at adderer tilbudspris og pris uanset hvilken situationer du er havnet
i?
Nils
--
netikette & citatteknik: http://www.usenet.dk/netikette/
| |
Martin Højriis Krist~ (18-04-2001)
| Kommentar Fra : Martin Højriis Krist~ |
Dato : 18-04-01 20:21 |
|
"Nils Lastein" <nila@dsr.kvl.dk> skrev i en meddelelse
news:AMlD6.47633$o4.3876757@news010.worldonline.dk...
> Hvis jeg tilbud er "nej" er tilbudspris vel NULL og dermed kan du tillade
> sig, at adderer tilbudspris og pris uanset hvilken situationer du er
havnet
> i?
Hvis tilbud er "ja" og der både står en pris og tilbudspris så vil prisen jo
blive for høj.
--
Med Venlig Hilsen
Martin Højriis Kristensen
Svar bedes baseret på RFC1855
Jeg repræsenterer med denne udtalelse mig selv og ikke TDC Internet
| |
Jørn Andersen (18-04-2001)
| Kommentar Fra : Jørn Andersen |
Dato : 18-04-01 20:47 |
|
On Wed, 18 Apr 2001 21:25:31 +0200, "Nils Lastein" <nila@dsr.kvl.dk>
wrote:
Hej Niels,
>Hvis jeg tilbud er "nej" er tilbudspris vel NULL og dermed kan du tillade
>sig, at adderer tilbudspris og pris uanset hvilken situationer du er havnet
>i?
Nej, tanken var, at man kan have tilbudspriser stående, og så aktivere
dem efter behov.
Desuden: Hvis titlen er på tilbud, så vil der jo både være en
normalpris og en tilbudspris, og at lægge dem sammen til AktuelPris
vil nok ikke gøre kunderne tilfredse
Mvh. Jørn
| |
Kristian Damm Jensen (24-04-2001)
| Kommentar Fra : Kristian Damm Jensen |
Dato : 24-04-01 09:18 |
|
Nils Lastein wrote:
>
> "Jørn Andersen" <jorn.a@email.dk> wrote in message
> news:zMjdOmUodWItaY2x8G==eoFi2Boq@4ax.com...
> > Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
> > [tilbud] (ja/nej) og [tilbudspris].
> > Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
> > gælder, bestemmes af ja/nej-feltet [tilbud].
> >
> > Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
> > [tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
> > hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
>
> Hvis jeg tilbud er "nej" er tilbudspris vel NULL og dermed kan du tillade
> sig, at adderer tilbudspris og pris uanset hvilken situationer du er havnet
> i?
Gys. Aldrig, aldrig lave beregninger på felter, der *kan* være NULL.
5+NULL = NULL !
I temmelig mange systemer. Den slags skal man passe på med.
Til gengæld har de fleste systemer også en funktion i stil med isnull(X,
V), der returnerer V, hvis X er NULL.
--
Kristian Damm Jensen | Feed the hungry. Go to
kristian-damm.jensen@capgemini.dk | http://www.thehungersite.com
| |
Jakob Nilsson (18-04-2001)
| Kommentar Fra : Jakob Nilsson |
Dato : 18-04-01 21:52 |
|
> Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
> [tilbud] (ja/nej) og [tilbudspris].
> Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
> gælder, bestemmes af ja/nej-feltet [tilbud].
>
> Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
> [tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
> hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
>
Er det noget i stil med dette du leder efter:
SELECT AktuelPris =
CASE Tilbud
WHEN 'Ja' THEN Tilbudspris
WHEN 'Nej' THEN Pris
END
FROM TableName
Mvh.
- Jakob
| |
Peter Lykkegaard (19-04-2001)
| Kommentar Fra : Peter Lykkegaard |
Dato : 19-04-01 14:49 |
|
"Jakob Nilsson" <jakobnilsson@hotmail.com> wrote in message
news:n7nD6.47737$o4.3886521@news010.worldonline.dk...
> > Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
> > [tilbud] (ja/nej) og [tilbudspris].
> > Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
> > gælder, bestemmes af ja/nej-feltet [tilbud].
> >
> > Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
> > [tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
> > hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
> >
>
> Er det noget i stil med dette du leder efter:
>
> SELECT AktuelPris =
> CASE Tilbud
> WHEN 'Ja' THEN Tilbudspris
> WHEN 'Nej' THEN Pris
> END
> FROM TableName
>
Hvis det er MSSQL Jørn arbejder med så er du tæt på
Jeg ville foretrække
SELECT AktuelPris =
CASE Tilbud
WHEN 'Ja' THEN Tilbudspris
ELSE Pris
END
FROM TableName
Men det er vel smag og behag
NB Konstruktionen virker kun med MSSQL
mvh/Peter Lykkegaard
| |
Jakob Nilsson (19-04-2001)
| Kommentar Fra : Jakob Nilsson |
Dato : 19-04-01 18:15 |
|
"Peter Lykkegaard" <polonline@hot.mail.com> wrote in message
news:1ZBD6.1298$Em3.7251@news.get2net.dk...
>
> Hvis det er MSSQL Jørn arbejder med så er du tæt på
> Jeg ville foretrække
IMHO er jeg dead-on
Jeg undlod ELSE af "pædagogiske" årsager men jeg giver dig helt ret i at det
er den "pæneste" måde at strukturere sit statement på.
> NB Konstruktionen virker kun med MSSQL
Du har ret i at jeg burde have nævnt at eksemplet bygger på T-SQL og som
sådan kun virker under SQL Server (og Sybase).
For øvrigt mener jeg at der i SQL-99 er support for Control-of-Flow
statements som IF..THEN..ELSE og CASE - men jeg er ikke 100 % sikker.
Mvh.
- Jakob
| |
Jørn Andersen (20-04-2001)
| Kommentar Fra : Jørn Andersen |
Dato : 20-04-01 00:31 |
|
On Thu, 19 Apr 2001 15:48:32 +0200, "Peter Lykkegaard"
<polonline@hot.mail.com> wrote:
>Hvis det er MSSQL Jørn arbejder med så er du tæt på
Desværre er det MS Access97 - ellers tak for hjælpen (til jer begge).
Jeg landede foreløbig på at udtrække hele RS og så lave if - then -
else bagefter. Så må jeg få optimeret senere.
Mvh. Jørn
| |
Nis Jørgensen (21-04-2001)
| Kommentar Fra : Nis Jørgensen |
Dato : 21-04-01 12:00 |
|
On Fri, 20 Apr 2001 01:31:06 +0200, Jørn Andersen <jorn.a@email.dk> wrote:
>On Thu, 19 Apr 2001 15:48:32 +0200, "Peter Lykkegaard"
><polonline@hot.mail.com> wrote:
>
>>Hvis det er MSSQL Jørn arbejder med så er du tæt på
>
>Desværre er det MS Access97 - ellers tak for hjælpen (til jer begge).
I Access kan du bruge:
SELECT Iif(Tilbud,Tilbudspris,Pris) As AktuelPris
FROM TableName
--
Med venlige hilsner
Nis Jørgensen, Albertslund
Actual code behavior may differ from intended.
| |
Jørn Andersen (21-04-2001)
| Kommentar Fra : Jørn Andersen |
Dato : 21-04-01 14:54 |
|
On Sat, 21 Apr 2001 12:59:58 +0200, Nis Jørgensen <nis@dkik.dk> wrote:
Hej Nis,
>I Access kan du bruge:
>
>SELECT Iif(Tilbud,Tilbudspris,Pris) As AktuelPris
>FROM TableName
Tak - det var lige den, jeg skulle bruge (tror jeg nok - jeg har kun
lige lavet en lyntest, da jeg skal ud af døren.
Mvh. Jørn
--
Jørn Andersen
Brønshøj
| |
Kim Brandt Jensen /L~ (19-04-2001)
| Kommentar Fra : Kim Brandt Jensen /L~ |
Dato : 19-04-01 13:13 |
|
jorn.a@email.dk,Ny-Internet writes:
>Hej,
>
>Jeg har en tabel, hvor jeg bl.a. har flterne [titelID], [pris],
>[tilbud] (ja/nej) og [tilbudspris].
>Der er altså både oplysninger om pris og tilbudspris. Hvilken, der
>gælder, bestemmes af ja/nej-feltet [tilbud].
>
>Hvis jeg nu ønsker at definere en AktuelPris som enten [pris] eller
>[tilbudspris] afhængigt af om ja/nej-feltet [tilbud] er sat eller ej,
>hvordan gør man så det med SQL? (Hvis det kan lade sig gøre!)
Hvis du vil gøre det i ren sql kan du bruge en union sætning:
Select Pris as aktuelpris from tabel
where titelid = @aktuelid and
tilbud = 'nej'
Union
Select Tilbudspris as aktuelpris from tabel
where titelid = @aktuelid and
tilbud = 'ja'
Med venlig hilsen
Kim Brandt Jensen
| |
|
|