Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 12:04 Der er 6 kommentarer og
1 løsning

Problem med count(*)

Hej
Jeg har denne SQL

SELECT SELECT annonce.annonceLink, annonce.annonceId, annonce.annonceTekst, annonce.annonceTid, annonce.annonceOverskrift, annonce.annoncePris, saelger.saelgerNavn, saelger.saelgerAdresse1, saelger.saelgerId, saelger.saelgerAdresse2, saelger.saelgerAdresse3, saelger.saelgerBillede, markedBilled.billede, markedBilled.billedeLille, markedBilled.billedeHoejde, markedBilled.billedeBredde, markedBilled.billedeId

FROM markedAnnonce AS annonce

INNER JOIN markedSaelger AS saelger ON annonce.annonceSaelgerId = saelger.saelgerId

LEFT JOIN markedBilled ON annonce.annonceId = markedBilled.billedeAnnonceId WHERE annonce.annonceStart <= '2010-02-13' AND annonce.annonceSlut >= '2010-02-13' AND annonce.annonceKategoriId = -506290950 AND (isNULL(markedBilled.billedeId) OR markedBilled.billedeId = (SELECT markedBilled.billedeId FROM markedBilled WHERE markedBilled.billedeAnnonceId = annonce.annonceId ORDER BY markedBilled.billedeLille DESC LIMIT 0,1))

GROUP BY annonce.annonceId ORDER BY annonce.annonceSlut ASC

Den returnere fx 17 rækker, men hvis jeg laver COUNT på den fucker den lidt op

SELECT Count(*) as antalAnnoncer FROM markedAnnonce AS annonce INNER JOIN markedSaelger AS saelger ON annonce.annonceSaelgerId = saelger.saelgerId LEFT JOIN markedBilled ON annonce.annonceId = markedBilled.billedeAnnonceId WHERE annonce.annonceStart <= '2010-02-13' AND annonce.annonceSlut >= '2010-02-13' AND annonce.annonceKategoriId = -506290950 AND (isNULL(markedBilled.billedeId) OR markedBilled.billedeId = (SELECT markedBilled.billedeId FROM markedBilled WHERE markedBilled.billedeAnnonceId = annonce.annonceId ORDER BY markedBilled.billedeLille DESC LIMIT 0,1)) GROUP BY annonce.annonceId ORDER BY annonce.annonceSlut ASC

Så bliver antalAnnoncer = 1 fordi den nu retunerer 17 rækker hvor der bare står 1 i "antalAnnoncer".

Den får altså ikke lavet den rette count?????
13. februar 2010 - 18:41 #1
Du fik (indtil nu) ingen response.  Jeg er selv tilbageholdende med at gaa i gang med spoergsmaalet paa grund af dine mange udestaaende punkter der representerer en lang raekke uafsluttede spoergsmaal.  Jeg laegger selv meget vaegt paa at spoergsmaal aabnes, behandles, og saa ryddes op/lukkes.  Jeg vaelger derfor at koncentrere mig om spoergsmaal rejst af medlemmer med samme indstilling paa det punkt.

Men du kunne jo lukke dine aabne spoergsmaal (det ville sikkert ikke tage mere end en halv time) og saa kunne jeg kikke paa sagen.
Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 18:58 #2
Øhhh, hvad er dit problem? :)

Jeg har gennem de sidste 2 år kun ganske få spørgsmål, som ikke er lukket - dels fordi ingen er kommet med et svar og dels fordi ingen endnu er kommet med rette svar.

Jeg forstår ikke helt? Men har du løsningen på mit problem - så skal du nok få dine points!
Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 19:08 #3
Men nu fik jeg da ryddet lidt op :)
13. februar 2010 - 19:55 #4
Saa kikkede jeg paa dine queries som saa temmelig komplicerede ud.  Loesningen paa problemet, hvis jeg har forstaaet det rigtigt, viser sig dog at vaere temmelig simpelt. 

Der er 17 raekker som svarer til dit foerste query.  Saa vil du i dit andet query simpelhen have en tabel med en enkel vaerdi, 17.  Korrekt?

Det faar du hvis du i dit andet query dropper "GROUP BY annonce.annonceId."  Simpelthen "SELECT COUNT(*) FROM [dine selection og join criteria].  Du kan saa med det samme i query 2 droppe "ORDER BY annonce.annonceSlut ASC" fordi resultattabellen kun har en raekke og der ikke er noget at ORDER BY.
Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 20:07 #5
Takker :)
13. februar 2010 - 20:19 #6
Og forresten, ja jeg kan se at du har lukket spoergsmaal.  Du er nu dagens topscorer med points paa grund af de mange udestaaende points der er kommet tilbage til dig.

Hvad mit problem er?  Egenlig ingen.  I de fem maaneder jeg har vaeret medlem paa eksperten har jeg vaeret nogenlunde aktiv og har nu 14 sider med spoergsmaal jeg har leveret indlaeg til.  Jeg synes det er meget nemmere naar de spoergsmaal der ikke laengere er aktive bliver ryddet op og markeret med den groenne knop.  Saa er der mindre at holde oeje med.  Ogsaa psykologisk, naar jeg har "investeret" interesse i et spoergsmaal og studeret det for at kunne komme med et indlaeg saa foeles det rart med en feedback hvor spoergsmaalstilleren konkluderer og lukker spoergsmaalet, enten jeg nu var i stand til at levere en loesning eller ej.  Jeg har saa lagt maerke til at mens stoerstedelen af medlemmer af Eksperten holder orden paa de spoergsmaal de opretter og faar dem afsluttet saa er der en gruppe medlemmer der aabenbart ikke finder det saa vigtigt og som derfor har mange udestaaende points.  Der kommer flere interessante spoergsmaal end jeg kan naa at involvere mig i, saa jeg vaelger simpelt hen spoergsmaal fra de medlemmer der lukker spoergsmaal.
Avatar billede kimlarsen1978 Nybegynder
13. februar 2010 - 22:26 #7
I get your point.

God weekend
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