Avatar billede loukas Mester
02. juni 2019 - 17:45 Der er 6 kommentarer og
1 løsning

COUNT() fra anden tabel

Jeg har 2 tabeller, og i den ene tabel skal jeg bruge antallet af records fra den anden tabel
Noget i den her stil:
"hosts.host_antalsider = "COUNT(*) WHERE sider.hostid=intHostid"

tabel1:
hosts
-hostid
-hostname
-host_antalsider

tabel2:
sider
-side_id
-hostid
-side_url
-side_title


Ved det ikke, men kan man ikke bruge views, stored procedure eller en function ?
Har ingen erfaring med nogen af dem.
Håber det er til at forstå, og at der er en som kan / vil hjælpe mig.
Avatar billede arne_v Ekspert
02. juni 2019 - 18:08 #1
SELECT hostname,COUNT(*) AS antalsider
FROM hosts JOIN sider ON hosts.hostid = sider.hostid
GROUP BY hostname
Avatar billede loukas Mester
02. juni 2019 - 19:23 #2
Tusind tak for hjælpen.
Jeg skal bruge tallet(antal sider) ret ofte, så er bange for at det bliver for tungt
at tælle dem "COUNT(*)" hver gang det skal bruges. Der er lidt mere end 500.000 records.

Men jeg kunne godt tænke mig at antallet af sider kom til at være i tabellen hosts.host_antalsider.

Kan man lave en function/procedure der opdaterer tallet når der er ændringer i tabellen 'sider' ?
Avatar billede arne_v Ekspert
02. juni 2019 - 19:45 #3
Principielt kan du lave en AFTER INSERT TRIGGER i side tabellen.

https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html

Men jeg er ikke helt vild med loesningen.
Avatar billede arne_v Ekspert
02. juni 2019 - 19:53 #4
Jeg ville foretraekke bare at cache resultatet i applikationen.
Avatar billede loukas Mester
02. juni 2019 - 21:00 #5
hvorfor vil du foretrække cache løsningen ?
Avatar billede arne_v Ekspert
02. juni 2019 - 21:24 #6
Renere database model.

Det er ikke godt at have data i sin database som kan beregnes udfra andre data i databasen.
Avatar billede loukas Mester
02. juni 2019 - 22:32 #7
Jeg siger tak for hjælpen for nu :-)
Vil prøve mig frem, og se hvad der fungerer bedst.
Tror det bliver cache løsningen.....
For at holde database modellen så 'clean' som muligt.
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