Avatar billede oasen Nybegynder
19. august 2002 - 19:27 Der er 10 kommentarer og
3 løsninger

Count fra anden tabel

Tabel 1:

ID..NAVN
23..Leo
12..Sussi
54..Richard
32..Emma
26..Bjørn


Tabel 2:

ID..Notat
32....1
12....1
23....1
12....1
12....
32.... 
23....1
12....1
32....

Hvordan laves en SQL, der skaber følgende recordsæt ud fra de to tabeller?

ID..NAVN....NOTATANTAL
12..Sussi.......3
23..Leo.........2
32..Emma........1
54..Richard.....0
26..Bjørn.......0

NOTATANTALLET er det antal forekomster, hvor der står et 1-tal ud for ID'et i Tabel 2.
F.eks. har Leo to 1-taller i Tabel 2.
Der skal samtidig soreteres efter NOTATANTAL, som det ses.

Nogen der kan håndtere den?
Avatar billede wittnezz Nybegynder
19. august 2002 - 19:36 #1
SELECT tabel1.Id AS ID, tabel1.Navn AS Navn, count(SELECT Notat FROM tabel2 WHERE tabel2.id=tabel1.id) FROM tabel1, tabel2 WHERE tabel1.id = tabel2.id

Er ikke sikker.... det er gået lidt hurtigt, men du har jo lov at prøve (og evt. håbe at en af sql-hajerne dukker op og hjælper.... :-)
Avatar billede Slettet bruger
19. august 2002 - 19:53 #2
SELECT tabel1.navn, SUM(tabel2.notat) AS thesum FROM tabel1 LEFT JOIN tabel2 ON tabel2.ID = tabel1.ID GROUP BY tabel1.ID ORDER BY thesum DESC
Avatar billede oasen Nybegynder
19. august 2002 - 20:03 #3
Det var ligeså meget strukturen, jeg er i tvivl om. Altså om der skal bruges inner/outer/left/right/natural join, union, select i select.
Avatar billede Slettet bruger
19. august 2002 - 20:05 #4
Det fremgår vel også nu?
Avatar billede oasen Nybegynder
19. august 2002 - 20:13 #5
Ja, hvis du har ligeså godt styr på SQL, som jeg håber på.
Jeg afprøver den lige om en times tid. Tak indtil videre.
Avatar billede oasen Nybegynder
19. august 2002 - 21:14 #6
SELECT tabel1.ID, tabel1.navn, SUM(tabel2.notat) AS thesum FROM tabel1 LEFT JOIN tabel2 ON tabel2.ID = tabel1.ID GROUP BY tabel1.ID, tabel1.navn ORDER BY thesum DESC

Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters. ??
Avatar billede Slettet bruger
19. august 2002 - 21:22 #7
Aner ikke noget om Microsoft JET Database Engine, hvad så end det er.
Avatar billede Slettet bruger
19. august 2002 - 21:23 #8
Ved i øvrigt heller ikke noget om ASP, jeg gav dig blot SQL'en.
Avatar billede oasen Nybegynder
19. august 2002 - 21:31 #9
Ehhh....jamen, hvor kommer den SQL så fra?
Avatar billede Slettet bruger
19. august 2002 - 21:39 #10
Det bør være ANSI SQL standard.

Jeg anvender normalt mySQL og PHP.
Avatar billede eagleeye Praktikant
19. august 2002 - 21:42 #11
Prøv at bruge Count og denne SQL:

SQL = "SELECT tabel_1.ID, tabel_1.navn, Count(tabel_2.notat) AS NOTATANTAL FROM tabel_1 LEFT JOIN tabel_2 ON tabel_1.ID = tabel_2.ID WHERE tabel_2.Notat="1" GROUP BY tabel_1.ID, tabel_1.navn ORDER BY Count(tabel_2.notat) DESC;"
Avatar billede oasen Nybegynder
19. august 2002 - 22:33 #12
mercur8 ---> Virkede fint. Du havde bare byttet om på tabel1 og tabel2 i Join.
Eagleeye ---> Ja, så kom sorteringen også til at fungere korrekt. Det virker både med Count og Sum :)
Avatar billede oasen Nybegynder
19. august 2002 - 23:20 #13
Nu joiner jeg tre tabeller med hinanden. Men kan det passe det tager 5-10 sek at lave recordsættet? Godt nok er det kun Access, men jeg synes det virker ret sløvt...
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
Kurser inden for grundlæggende programmering

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