Avatar billede erik_a Novice
14. april 2014 - 15:42 Der er 4 kommentarer og
1 løsning

SELECT, JOIN, COUNT

Hejsa

Jeg mangler lidt hjælp til en mysql sætning.

Jeg har en række tabeller:

COW: cowid,race,name,sirename,gsirename...
SIRE: sireid,name...

I min select sætning vil jeg gerne have et udtræk med
cowid, race,name,sirename,<antal i tabellen SIRE med værdien sirename>,gsirename,<antal i tabellen SIRE med værdien gsirename>

Håber i forstår hvad jeg mener?
<...> altså antallet af (g)sirename med samme navn - 0,1,2...

Skal bruges til at finde ud af om det indtastede (g)sirename eksisterer og er unikt.

Pft
Erik
Avatar billede arne_v Ekspert
16. april 2014 - 03:54 #1
proev:

SELECT cowid, race,name,sirename,(SELECT COUNT(*) FROM sire WHERE sire.name=sirename),gsirename,(SELECT COUNT(*) FROM sire WHERE sire.name=gsirename)
FROM cow
Avatar billede erik_a Novice
16. april 2014 - 10:39 #2
Har prøvet at fyre den af, bliver aldrig færdig med forespørgslen...
Fatter det ikke, havde lavet noget lignende selv, men stadig øv.
Avatar billede arne_v Ekspert
17. april 2014 - 03:21 #3
Har du index paa sire.name, cow.sirename og cow.gsirename?
Avatar billede proaccess Nybegynder
23. april 2014 - 08:44 #4
Du kan prøve om ikke følgende løsning med joins giver bedre performance...

SELECT     c.cowid, c.race, c.name, c.sirename, COUNT(s1.sireid), c.gsirename, COUNT(s2.sireid)
FROM    COW AS c
    LEFT JOIN SIRE AS s1 ON c.sirename = s1.sirename
    LEFT JOIN SIRE AS s2 ON c.gsirename = s2.sirename
GROUP BY c.cowid, c.race, c.name, c.sirename, c.gsirename

MVH
Poul Erik
Avatar billede erik_a Novice
12. august 2014 - 08:13 #5
Bedre sent end aldrig...
Jeg undskylder og takker for hjælpen...
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

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