Avatar billede ostehamster Nybegynder
21. januar 2003 - 12:34 Der er 9 kommentarer og
3 løsninger

flere count(*) i et kald?

Hejsa

Er det muligt at lave:
SELECT COUNT(*) FROM tabel WHERE felt1 LIKE '%noget%';
SELECT COUNT(*) FROM tabel WHERE felt2 LIKE '%noget andet%';

om til et kald?

Jeg skal lave en oversigt, med nogle ord i en tekst, og der skal så skrives et antal.

Synes ti kald på en side er lige lovlig meget.

mvh
Christoffer
Avatar billede arne_v Ekspert
21. januar 2003 - 15:29 #1
Med 2 forskellige felter er det et problem.

Hvis det er sammme felt er det nemt.

SELECT COUNT(*),felt FROM tabel GROUP BY felt;
Avatar billede arne_v Ekspert
21. januar 2003 - 15:33 #2
Hvis du bare vil havet et kald kan du bruge:

(SELECT COUNT(*) FROM tabel WHERE felt1 LIKE '%noget%') UNION
(SELECT COUNT(*) FROM tabel WHERE felt2 LIKE '%noget andet%');

men det pynter jo ikke meget på SQL'en.
Avatar billede lilleib Nybegynder
21. januar 2003 - 16:18 #3
Hvorfor ikke bare bruge OR hvis det skal være fra samme tabel - det behandler MySQL også hurtigt.
Fx. SELECT COUNT(*) FROM tabel WHERE felt1 LIKE '%noget%' OR felt2 LIKE '%noget andet%'
Avatar billede ostehamster Nybegynder
21. januar 2003 - 16:58 #4
arne_v > det var mest for at spare på kaldet til mySQL serveren. Er det ikke skidt at "spørge" den om noget 10 gange, bare for at vise en side?

lilleib > fordi det er ikke det jeg vil. Jeg vil vide hvor mange poster der indeholder "noget" i feltet "felt1". Og så vil jeg vide hvor mange poster der indeholder "noget andet" i feltet "felt2"
Avatar billede _darkstar_ Nybegynder
21. januar 2003 - 17:00 #5
Jamen så hedder det

SELECT COUNT(*), felt1 FROM tabel
GROUP BY felt1
Avatar billede ostehamster Nybegynder
21. januar 2003 - 17:12 #6
Hvor dog det? Det får jeg ikke noget ud af!
Avatar billede ostehamster Nybegynder
21. januar 2003 - 17:15 #7
hvor = hvorfor
Avatar billede arne_v Ekspert
21. januar 2003 - 17:22 #8
Hvis du kun skal havereturneret 1 tal fra hver SELECT, så kan du bruge
UNION tricket.

Jo lidt afhængig af konfigurationen kan det godt være en fordel
kun at sende en query til databasen.
Avatar billede ostehamster Nybegynder
21. januar 2003 - 17:38 #9
Union virker ikke på mySQL, den siger:

mysql> (select count(*) from kalender where tekst like '%er%') union (select count(*) from kalender where resume like '%en'%);

ERROR 1064: You have an error in your SQL syntax near '(select count(*) from kalender where tekst like '%er%') union (select count(*) f' at line 1
Avatar billede arne_v Ekspert
21. januar 2003 - 19:37 #10
Ups.

Det er rigtigt. UNION er først i MySQL 4.0 !
Avatar billede proaccess Nybegynder
23. januar 2003 - 13:22 #11
Du kan prøve med:

SELECT SUM(IF(felt1 LIKE '%noget%', 1, 0)) A, SUM(IF(felt2 LIKE '%noget andet%',1, 0)) B FROM tabel;
Avatar billede ostehamster Nybegynder
05. februar 2003 - 14:10 #12
lukker
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