Avatar billede meo Nybegynder
10. maj 2006 - 23:52 Der er 5 kommentarer og
1 løsning

nummer af records

Hej.

jeg har to tabeller.

CREATE TABLE kategori (
  `Kid` smallint(6) NOT NULL auto_increment,
  `Kname` varchar(100) NOT NULL,
  `Korder` smallint(6) NOT NULL default '0',
  PRIMARY KEY  (`Kid`)
) ;

og
CREATE TABLE `ukategori` (
  `kid` smallint(6) NOT NULL ,
  `ukid` smallint(6) NOT NULL,
  PRIMARY KEY  (`kid`,`ukid`),
  KEY `FK_UKname` (`ukid`)
);

så vil jeg alle kname fra kategori-tabellen hvor kid i ukategori optræder mere end 1 gang.

jeg har lavet denne query som bare viser hvor mange gange kid optræder:
SELECT k.kid , count(*) as thecount FROM `kategori` k , ukategori uk WHERE k.kid=uk.kid  group by k.kid;

Men jeg vil kun have listet alle dem som er optræder mere end en gang.
Hvordan gør jeg?
//meo
Avatar billede pidgeot Nybegynder
11. maj 2006 - 00:05 #1
Virker dette ikke?

SELECT k.kid , count(*) as thecount FROM `kategori` k , ukategori uk WHERE k.kid=uk.kid AND thecount>1 group by k.kid;
Avatar billede meo Nybegynder
11. maj 2006 - 00:12 #2
nej. Det glemte jeg at fortælle.
jeg fik denne fejl:

Error
SQL query: 

SELECT k.kid, count( * ) AS thecount
FROM `kategori` k, ukategori uk
WHERE k.kid = uk.kid
AND thecount >1
GROUP BY k.kid;

MySQL said: 

#1054 - Unknown column 'thecount' in 'where clause'
Avatar billede pidgeot Nybegynder
11. maj 2006 - 00:44 #3
Hmm - generelt plejer MySQL nu nok at kunne forstå de aliasser, men lad nu det ligge.

Har du prøvet denne?

SELECT k.kid , count(*) as thecount FROM `kategori` k , ukategori uk WHERE k.kid=uk.kid AND count(*)>1 group by k.kid;
Avatar billede meo Nybegynder
11. maj 2006 - 09:53 #4
ja, og jeg får denne fejl:

MySQL said: 

#1111 - Invalid use of group function
Avatar billede meo Nybegynder
11. maj 2006 - 09:54 #5
Jeg kan oplyse at database versionen er MySQL 4.0.20a, hvis det har nogen betydning.
Avatar billede meo Nybegynder
11. maj 2006 - 10:22 #6
jeg har fundet ud af det selv.

SELECT k.kid, count( * ) AS thecount
FROM `kategori` k, ukategori uk
WHERE k.kid = uk.kid
GROUP BY k.kid
HAVING thecount >1;

WHERE arbejder på 1 række
GROUP BY grupperer rækker
HAVING arbejder på 1 række af grupperede rækker
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