Avatar billede andersbl Nybegynder
16. juni 2010 - 17:27 Der er 9 kommentarer og
1 løsning

Subquery må ikke retunerer mere end en værdi.

Hej Eksperter
Jeg prøver at få en række ud af en join, hvor jeg tager (id)-feltet flere gange og sætter til en variabel og der ved får:
Navn, Efternavn, (id1, id2, id3 ... ), Sport.
Det er i stedet for at få Navn, Efternavn, Sport flere gange. Har prøvet at løse den, men er støt på en fejl, som i sikkert hurtig kan rette.


Am getting this error in sql server "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.".


    DECLARE
    @empname VARCHAR(100),
    @Id VARCHAR(100),
    @pakkeId int
    SET @empname = ''
    SET @pakkeId = (SELECT pakkeId FROM tabel WHERE lastupdate = 'ANDERS')
    --Returenrer alle pakker
   
    DECLARE getemp_curs CURSOR
        FOR

        SELECT TradeId FROM dmbd_owner.tabel
        LEFT JOIN dmbd_owner.tabel2
        ON b.pakkeId = a.pakkeId
        WHERE a.pakkeid = @pakkeId
       
   
    OPEN getemp_curs
        FETCH NEXT FROM getemp_curs into @Id
        WHILE @@FETCH_STATUS = 0 BEGIN
                SET @empname = @empname + @Id + '<br>'
        FETCH NEXT FROM getemp_curs into @Id
    END
   
    CLOSE getemp_curs
    DEALLOCATE getemp_curs
    Print(@empname)
   
SELECT TOP 1 a.name, a.postnr, a.sport @empname AS test FROM tabel a
        LEFT JOIN tabel2 b
        ON b.pakkeId = a.pakkeId
        WHERE a.pakkeid= @pakkeId
Avatar billede pej-delphi Nybegynder
16. juni 2010 - 19:20 #1
(Select distinct lastupdate, pakkeid from tabel where lastupdate='anders') tror jeg vil løse dit problem.
Avatar billede Syska Mester
16. juni 2010 - 23:02 #2
SELECT TOP 1 pakkeid from table where somecol = somevalue
Avatar billede andersbl Nybegynder
17. juni 2010 - 07:19 #3
Hej tak for jeres svar. Har mulighed for at teste i morgen.
@buzzzz din læsning tror jeg ikke holder da jeg kun få et pakkenid ud og der kan fx være 5 pakkeid. Ved godt det læser fejlen, men så er kode ubruglig.

Navn;efternavn;pakkeid;sport;
Anders;larsen;pak1;fodbold
anders;Larsen;pak1;håndbold
Anders;Larsen;pak2;fest
Anders;Larsen;pak2;golf

jeg vil gerne have følgende:
anders;larsen;fodbold,håndbold
anders;larsen;fest,golf.

Så man ligger sportsgrene sammen til en kolonne hvis der findes flere under samme pakkeid. Er faktisk sådan det ville Se ud med stort set alle join jeg ønsker bare kun at vise det på en linje med, men med alle oplysninger.
Avatar billede Syska Mester
17. juni 2010 - 09:24 #4
Det er ikke en opgave for databasen, det "bør" du håndtere i dit business logic lag ...

Jeg ved der har været et spørgsmål om præcis det samme ... ser lige om jeg kan finde det.

mvh
Avatar billede Syska Mester
17. juni 2010 - 09:27 #5
http://www.eksperten.dk/spm/910734

Kig i den tråd ...

Der samler de flere rows til en kolonne.

mvh
Avatar billede Syska Mester
17. juni 2010 - 09:35 #6
Ups, glem min sidste post, det omhandler et andet problem.
Avatar billede janus_007 Nybegynder
17. juni 2010 - 20:03 #7
Avatar billede janus_007 Nybegynder
17. juni 2010 - 20:05 #8
Og ja... btw... Holder med Buzzz, det bør løses i applikationen, kan faktisk slet ikke forstå man gider andet :)

I applikationen kan det løses med en linje Linq.
Avatar billede andersbl Nybegynder
01. december 2010 - 12:57 #9
lukker
Avatar billede Syska Mester
01. december 2010 - 13:10 #10
løsningen blev ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester