SELECT hus.id, hus.title, COUNT(*) as Nums FROM huse,svar WHERE huse.id = svar.id AND ((huse.title LIKE '%tst%' OR huse.hus LIKE '%tst%' OR svar.svar LIKE '%tst%')) GROUP BY huse.title,huse.hus ORDER BY Nums DESC, huse.title LIMIT 0, 25
teknisk set "bygger" din select en ny tabel (i memory) der kun indeholder felterne id og title, begge fra hus-tabellen, og count(*) angiver så antallet af records i din, nye, tabel.
Og der er selvfølgeligt kun de record fra hus, der kan godkendes iht. de kriterier du har angivet i where-delen.
Hvis jeg prøver at genskabe din sql, og indsætter count(huse.title), count(huse.hus), så får jeg samme resultat af alle 3 counts. Så mit bud må være, at count(*) tæller hvor mange records de enkelte group by-resultater indeholder.
Jeg ved dog ikke lige om min syntaks blev det samme som din, da jeg bare lavede en simpel lille tabel, med meget lidt data i.
Når du har en group by i din sql, så tæller count resultatet af denne, og ikke hele resultatets størrelse. Derfor er count feltet også forskelligt for hver result-record.
Det har jeg lidt svært ved at forstå. Men det er også lidt svært for mig at teste, uden at skulle lave en database der ligner din fuldstændig, og som har en masse indhold. På den lille testtabel jeg lavede, fik jeg i hvert fald det rigtige resultat vha count(*).
Problemet er nok at du har en join mellem huse og svar. Hvis du har f.eks. 2 svar-records med samme id, som begge opfylder where-betingelsen, så vil det id tælle 2 gange i din count(*) !
Prøv noget i retning af \'count(distinct huse.id)\' (det skulle vist være Oracle syntax, men det burde virke nogenlunde på samme måde i standard SQL).
Synes godt om
Ny brugerNybegynder
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.