webForumDet fria alternativet

Enkel count

Databaser & SQL

4 svar · 240 visningar · startad av jonne

Medlem sedan jan. 20011 154 inlägg
Frågan#1

Vad jag trodde skulle vara en enkel count har visat sig vara lite knivigare.

SELECT COUNT(Scr.scrID) AS Screenshots, COUNT(Mem.memID) AS Members, COUNT(Lkn.linkID) AS Links
FROM tblScreenshots AS Scr, tblMembers AS Mem, tblLinks AS Lkn

ger

+-------------+---------+-------+
| Screenshots | Members | Links |
+-------------+---------+-------+
|        8640 |    8640 |  8640 |
+-------------+---------+-------+

men de siffrorna är helt uppåt väggarna fel. Är mer i stil med 15, 32,19.
Det enda jag vill göra är att räkna hur många poster varje tabell innehåller i en och samma SQL sats. Vad gör jag för fel?

Medlem sedan dec. 200012 464 inlägg
#2

Det du får är antalet rader i kryssprodukten av alla tabeller.

select count(*), 'Screenshots' from tblScreenshots union all
select count(*), 'Members from tblMembers union all
select count(*), 'Links' from tblLinks
Medlem sedan jan. 20011 154 inlägg
#3

Möjligt att min hjärna går på lågvarv nu, men den klagar på union delen i det du skrev LarsG.

Medlem sedan dec. 200012 464 inlägg
#4

Ok, union finns inte i alla versioner av Mysql. Det kom först i version 4 någonting.

Då ser jag inget alternativ än att ställa tre frågor. Det borde inte vara någon speciellt märkbar prestandaförlust

Medlem sedan jan. 20011 154 inlägg
#5

Ok kör 3.23.47 på servern. Får köra med flera frågor då. Tackar för visat intresse :)

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)