Avatar billede donkazz Nybegynder
30. april 2008 - 12:10 Der er 4 kommentarer og
1 løsning

SP og WHILE returnerer kun 1 resultat og ikke begge kolonner?

Hejsa!

Jeg har en tabel med brugere og en tabel med afdelinger. Hver bruger er knyttet til en afdeling på bruger.afdeling=afdelinger.afdelingsId, men følgende SP hiver kun 1. resultat ud og kun feltet "navn", men ikke "afdNavn" (når jeg prøver at loope igennem den i ASP - se nederst)

SP:

BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here

        DECLARE @brugerId varchar(11), @afdeling varchar(11), @navn varchar(20), @brugerNavn varchar(40),
            @message varchar(80), @afdNavn varchar(80)


        DECLARE brugere_cursor CURSOR FOR

            SELECT brugerId, afdeling, navn, brugerNavn
            FROM brugere
            WHERE ansat = 1
            ORDER BY navn
         
        OPEN brugere_cursor


        FETCH NEXT FROM brugere_cursor INTO @brugerId, @afdeling, @navn, @brugerNavn

        WHILE @@FETCH_STATUS = 0

        BEGIN
            SELECT @navn AS navn


            DECLARE afdeling_cursor CURSOR FOR
                SELECT a.afdNavn
                FROM afdelinger a
                WHERE a.afdelingsId = @afdeling  -- Variable value from the outer cursor
            OPEN afdeling_cursor

            FETCH NEXT FROM afdeling_cursor INTO @afdNavn


            WHILE @@FETCH_STATUS = 0

            BEGIN
                SELECT @afdNavn AS afdNavn
                FETCH NEXT FROM afdeling_cursor INTO @afdNavn
            END

            CLOSE afdeling_cursor
            DEALLOCATE afdeling_cursor


            FETCH NEXT FROM brugere_cursor
            INTO @brugerId, @afdeling, @navn, @brugerNavn

        END

        CLOSE brugere_cursor
        DEALLOCATE brugere_cursor

END


------------
her er min ASP:


sql = "EXEC getRankings"
set rs = conn.execute(sql)
if not rs.eof then
    rowCount = 1
    response.write "" &_
    "<table>" &_
    "<tr>" &_
        "<th>&nbsp;</th>" &_
        "<th>Navn</th>" &_
        "<th>Afdeling</th>" &_
    "</tr>"
    do while not rs.eof
       
        response.write "" &_
        "<tr>" &_
            "<td>" & rowCount & ". </td>" &_
            "<td>" & rs("navn") & "</td>" &_
            "<td> & rs(""afdNavn"") & </td>" &_
        "</tr>"
        rs.moveNext
        rowCount = rowCount+1
    loop
    response.write "" &_
    "</table>"
end if
set rs = nothing



Hvad gør jeg forkert? :)
Avatar billede arne_v Ekspert
01. maj 2008 - 04:04 #1
Jeg ville nok erstatte de 2 cursors med en enkelt SELECT med JOIN.
Avatar billede donkazz Nybegynder
05. maj 2008 - 09:31 #2
Hmmm..... kan du vise hvordan? Jeg er nemlig ikke helt inde i det med cursors, men umiddelbart ser de ud til at være flettet godt og grundigt ind i dén sql der..
Avatar billede HenrikSjang Nybegynder
05. maj 2008 - 18:12 #3
Du kan gøre sådan her:

SELECT navn, brugerNavn, afdelinger.afdNavn
FROM brugere
LEFT JOIN afdelinger ON brugere.afdeling = afdelinger.afdelingsId
WHERE ansat = 1
ORDER BY navn

Så får du en liste med alle dine brugere, hvor der er tilføjet en ekstra kolonne med afdNavn'et.
Avatar billede donkazz Nybegynder
06. maj 2008 - 09:33 #4
Tjah men problemet er at jeg rent faktisk skal lave en COUNT på flere felter i en helt anden tabel, for hvert bruger id, så for hver medarbejder skal jeg have noget lignende

Navn | Antal timer | Antal fridage | Antal sygedage
Navn | Antal timer | Antal fridage | Antal sygedage
Navn | Antal timer | Antal fridage | Antal sygedage
Navn | Antal timer | Antal fridage | Antal sygedage
Navn | Antal timer | Antal fridage | Antal sygedage

noget i den dur.. :)
Avatar billede donkazz Nybegynder
09. maj 2008 - 14:07 #5
Jeg fandt selv en løsning ved at gå væk fra SP...
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