mikk- Skrevet 8. september 2006 Del Skrevet 8. september 2006 Hei, Holder på med et miniforum til et lite CMS. I den anledning vil jeg liste opp kategorier fra fcat, og telle antall topics i ftop som har tilsvarende verdi i kolonnen fcat. Med andre ord: telle hvor mange emner det er i kategorien. Hver rad i fcat (kategorier) har en kolonne id. Hver rad i ftop (emner) har en kolonne fcat som viser hvilken kategori emnet hører hjemme i. Er dette mulig å gjøre i én spørring? Hvis ikke: er det mulig å gjøre det i to spørringer, altså ikke én for _hver_ kategori? Takker for svar. Lenke til kommentar
enden Skrevet 8. september 2006 Del Skrevet 8. september 2006 Det er lenge siden jeg har holdt på med SQL, men er ikke dette en enkel kombinert spørring da (litt usikker på om jeg forstod deg rett)? Noe ala min rustne kvasikode: Select count(ftopID) from ftop where fcat = ( select fcatID from fcat where fcatID = whatever ); Hvis dette virker i nærheten av smart så slå opp SQL subqueries Lenke til kommentar
mikk- Skrevet 8. september 2006 Forfatter Del Skrevet 8. september 2006 (endret) Hmmmmmmm. Med det queriet må man vel kjøre et query per kategori man vil finne antallet emner i? Fant en annen, litt halvveis, løsning. Legger her til at jeg også vil ha antall svar i kategorien. Tror jeg må finne meg en bok eller noe om mySQL... SELECT russ_fcat.name , COUNT( russ_fpost.id) AS posts, COUNT( russ_ftop.id) AS topics FROM russ_fcat LEFT JOIN russ_ftop ON russ_fcat.id = russ_ftop.fcat LEFT JOIN russ_fpost ON russ_ftop.id = russ_fpost.ftop GROUP BY russ_fcat.id Dette gir at antall topics er [antall posts + antall topics] i kategorien. Å regne ut antall topics gjør jeg så ved å subtrahere.. Ikke noe optimal løsning, men queryet kjører kjapt. Jeg får heller eventuelt endre det om jeg finner en annen løsning senere. Takk skarru ha, Jørgen! Endret 8. september 2006 av Mikael Berg Lenke til kommentar
jorgis Skrevet 8. september 2006 Del Skrevet 8. september 2006 Dette bør da være mulig uten å måtte kjøre teite joins? SELECT c.name, count(p.id) AS posts, count(t.id) AS topics FROM russ_fcat c, russ_fpost p, russ_ftop t WHERE c.id = t.fcat AND t.id = p.ftop GROUP BY c.id Har ikke testet koden, men mener at dette vil være en raskere og mer effektiv løsning. Om det er mulig å gjøre noe uten joins, gjør jeg det uten joins. Lenke til kommentar
mikk- Skrevet 8. september 2006 Forfatter Del Skrevet 8. september 2006 Hm, jorgis. Den koden returnerer name:russerevy /* navnet på første kategori*/ posts: 13 /* stemmer */ topics: 3 /* det er 4 topics i kategori 1. To har samme navn (men ikke id) */ Jeg skulle hatt alle de forskjellige kategoriene, og tilhørende postcount og topiccount som kolonner... Lenke til kommentar
enden Skrevet 9. september 2006 Del Skrevet 9. september 2006 Ah, jeg misforstod spørsmåplet litt ja. Tror nok du må kjøre den med joins Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå