Sanger Skrevet 29. mai 2006 Del Skrevet 29. mai 2006 (endret) 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 29. mai 2006 av Sanger Lenke til kommentar
roac Skrevet 29. mai 2006 Del Skrevet 29. mai 2006 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
DidzisK Skrevet 30. mai 2006 Del Skrevet 30. mai 2006 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
Sanger Skrevet 30. mai 2006 Forfatter Del Skrevet 30. mai 2006 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå