Gå til innhold

Anbefalte innlegg

Hei, Kan en bruke count(*) inne i en loop, f.eks

 

SELECT L.Lnr, L.Navn, L.Adr

 

FROM laaner2 L, utlaan2 U

 

WHERE L.Lnr IN (SELECT Lnr, COUNT(*) AS Antall

FROM utlaan2

GROUP BY Lnr

HAVING Antall>1

);

 

Den andre selecten gir isolert ut ønsket resultat, men når den puttes inn i løkka fungerer det ikke.

Endret av Sanger
Lenke til kommentar
Videoannonse
Annonse

Siden du ikke spesifiserer hvilken database du skal bruke har jeg valgt SQL Server 2005 evt IBM DB2 for deg, og vi får da følgende kode som du kan bruke (har ikke teste på DB2, men det skal ikke være store endringene som skal til):

 

create table laaner2 (
 Lnr int,
 Navn varchar(60),
 Adr varchar(60)
);
go

create table utlaan2 (
 Lnr int,
 Noe varchar(60)
);
go

insert into laaner2 values (1,'Ole','Oslo');
insert into laaner2 values (2,'Per','Drammen');
insert into laaner2 values (3,'Linda','Bergen');
go

insert into utlaan2 values (1,'Bil');
insert into utlaan2 values (1,'Sykkel');
insert into utlaan2 values (2,'Bok');
insert into utlaan2 values (3,'Sminkepung');
insert into utlaan2 values (3,'Smykke');
insert into utlaan2 values (3,'Kjole');
go

-- Spørring her
WITH laaneinfo2 AS (
 SELECT
   L.Lnr,
   L.Navn,
   L.Adr,
   count(U.Lnr) over (partition by U.Lnr) AS Antall
 FROM laaner2 L INNER JOIN utlaan2 U ON (L.Lnr = U.Lnr)
) SELECT DISTINCT Lnr, Navn, Adr, Antall
FROM laaneinfo2 WHERE Antall > 1;

Lenke til kommentar
Hei, Kan en bruke count(*) inne i en loop, f.eks

 

SELECT L.Lnr, L.Navn, L.Adr

 

FROM laaner2 L, utlaan2 U

 

WHERE L.Lnr IN (SELECT Lnr, COUNT(*) AS Antall

                        FROM utlaan2

                        GROUP BY Lnr

                        HAVING Antall>1

                        );

 

Den andre selecten gir isolert ut ønsket resultat, men når den puttes inn i løkka fungerer det ikke.

Hvorfor skal du spesifisere utlaan2 i hovedspørringen hvis du ikke selekterer noe fra den? Og hvorfor skal du selektere antallet i den andre delen? Den andre spørringen kan endres til følgende:

SELECT Lnr
 FROM utlaan2 GROUP BY Lnr
 HAVING COUNT(*) > 1

 

Så til slutt blir det slikt:

SELECT L.Lnr, L.Navn, L.Adr
 FROM laaner2 L
 WHERE L.Lnr IN (
   SELECT Lnr
     FROM utlaan2 GROUP BY Lnr
     HAVING COUNT(*) > 1)

Lenke til kommentar
Hei, Kan en bruke count(*) inne i en loop, f.eks

 

SELECT L.Lnr, L.Navn, L.Adr

 

FROM laaner2 L, utlaan2 U

 

WHERE L.Lnr IN (SELECT Lnr, COUNT(*) AS Antall

                         FROM utlaan2

                         GROUP BY Lnr

                         HAVING Antall>1

                         );

 

Den andre selecten gir isolert ut ønsket resultat, men når den puttes inn i løkka fungerer det ikke.

Hvorfor skal du spesifisere utlaan2 i hovedspørringen hvis du ikke selekterer noe fra den? Og hvorfor skal du selektere antallet i den andre delen? Den andre spørringen kan endres til følgende:

SELECT Lnr
 FROM utlaan2 GROUP BY Lnr
 HAVING COUNT(*) > 1

 

Så til slutt blir det slikt:

SELECT L.Lnr, L.Navn, L.Adr
 FROM laaner2 L
 WHERE L.Lnr IN (
   SELECT Lnr
     FROM utlaan2 GROUP BY Lnr
     HAVING COUNT(*) > 1)

6207433[/snapback]

 

Dette gjorde susen! Så enkelt ting ser ut når en slipper gruble selv. Jeg får gruble mere, så blir jeg også flinkere. TAKK!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...