/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Problemer med SQL sætning
Fra : Martin Kjelsmark


Dato : 16-12-02 16:04

Hej Ng,

Jeg har lidt problemer med en SQL sætning, håber i kan hjælpe.

Sætningen ser ud som følgende:

select tekst, overskrift
from kalenderNoter
where    ( oprettetuge = 52 and oprettetAar = 2002 )
   or ( slettetUge = 52 and slettetAar = 2002 )
   or 52 > (Select slettetUge from kalenderNoter where slettetUge is
Null )

Dette giver flg. fejl:

Subquery returned more than 1 value. This is not permitted when the
subquery follows =, !=, <, <= , >, >= or when the subquery is used as
an expression.

Jeg forstår godt fejlmeddelelsen, men kan ikke lige se hvordan jeg
ellers skal lave denne forespørgsel.

SQL sætningen skal bruges til at hente noter til en kalender, den skal
hente noter der er oprettet i den pågældende uge,år (oprettetUge,
oprettetAar), noter der er markeret som slettede, i den pågældende
uge, år (slettetUge, slettetAar), og til sidste skal den returnere de
gamle noter der ikke er slettede, og som er ældre en nuværende uge, år
(52, 2002).

mvh
Martin Kjelsmark

 
 
Nis Jorgensen (16-12-2002)
Kommentar
Fra : Nis Jorgensen


Dato : 16-12-02 18:49

On 16 Dec 2002 07:03:56 -0800, martin@kjelsmark.dk (Martin Kjelsmark)
wrote:

>Hej Ng,
>
>Jeg har lidt problemer med en SQL sætning, håber i kan hjælpe.
>
>Sætningen ser ud som følgende:
>
>select tekst, overskrift
>from kalenderNoter
>where    ( oprettetuge = 52 and oprettetAar = 2002 )
>   or ( slettetUge = 52 and slettetAar = 2002 )
>   or 52 > (Select slettetUge from kalenderNoter where slettetUge is
>Null )

Den sidste linje er helt gal. For det første indeholder den ikke nogen
henvisning til den instans af kalenderNoter som du vælger rækker fra -
og derfor returnerer den enten True eller False for alle rækkerne.
Derudover vælger subquerien alle rækker hvor slettetUge er NULL -
hvilket kan være mere nul, en eller flere. Fra disse rækker vælges
feltet slettetUge - som altså er NULL. Denne liste af NULLS
sammenlignes så med tallet 52. Hvad er meningen?

>SQL sætningen skal bruges til at hente noter til en kalender, den skal
>hente noter der er oprettet i den pågældende uge,år (oprettetUge,
>oprettetAar), noter der er markeret som slettede, i den pågældende
>uge, år (slettetUge, slettetAar), og til sidste skal den returnere de
>gamle noter der ikke er slettede, og som er ældre en nuværende uge, år
>(52, 2002).

Noget i denne retning?

select tekst, overskrift
from kalenderNoter
where    
   ( oprettetuge = 52 and oprettetAar = 2002 )
   or ( slettetUge = 52 and slettetAar = 2002 )
   or (
   (oprettetAar < 2002 or (oprettetAar = 2002 and oprettetuge
<52))
   and slettetuge IS NULL
   )
   

--
Nis Jørgensen
Amsterdam

Please include only relevant quotes, and reply below the quoted text. Thanks

Martin Kjelsmark (17-12-2002)
Kommentar
Fra : Martin Kjelsmark


Dato : 17-12-02 09:01

> Noget i denne retning?
>
> select tekst, overskrift
> from kalenderNoter
> where    
>    ( oprettetuge = 52 and oprettetAar = 2002 )
>    or ( slettetUge = 52 and slettetAar = 2002 )
>    or (
>    (oprettetAar < 2002 or (oprettetAar = 2002 and oprettetuge
> <52))
>    and slettetuge IS NULL
>    )

Yup - Det var meget godt ramt, har lavet en lille ændring, og så
virkede det perfekt efter hensigten.

Tak for hjælpen!

select tekst, overskrift
from kalenderNoter
where ( oprettetuge = 50 and oprettetAar = 2002 and slettetUge IS NULL
)
or ( slettetUge = 50 and slettetAar = 2002 )
or ( (oprettetAar < 2002 or (oprettetAar = 2002 and oprettetuge <50))
and slettetuge IS NULL)

mvh
Martin Kjelsmark

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste