webForumDet fria alternativet

Hämta begränsat antal poster och...

Databaser & SQL

6 svar · 488 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

Jag vill hämta ut ett begränsat antal poster ur tabellen 'poster'.

SELECT postID
FROM poster
WHERE userID = '1'
LIMIT 5

Funkar ju bra, men nu vill jag samtidigt veta totalt hur många poster som tillhör användaren (userID). Mysql_num_rows funkar ju inte efter som jag har en LIMIT - resulterar alltid i 5 eller mindre.

Hur kan jag göra?

Medlem sedan juni 200032 967 inlägg
#2

Har du en hyggligt ny version kan du slänga med en subquery.

SELECT postID, (SELECT COUNT(*) FROM poster WHERE userID = '1') AS antal
FROM poster
WHERE userID = '1'
LIMIT 5

Jag gissar dock på att userID är ett fält av någon sorts taltyp, ta då bort apostroferna runt värdet.

Medlem sedan jan. 20051 130 inlägg
#3

Ok, from vilken version funkar subquerys. Rent prestandamässigt vinner jag väl inget på att göra en subquerys jämfört med att göra två separata querys?

Medlem sedan juni 200032 967 inlägg
#4

Ok, from vilken version funkar subquerys.

4.1.

Rent prestandamässigt vinner jag väl inget på att göra en subquerys jämfört med att göra två separata querys?

Det är nog ingen större skillnad skulle jag tro.

Medlem sedan jan. 20051 130 inlägg
#5

@nders skrev:

4.1.

OK.

@nders skrev:

Det är nog ingen större skillnad skulle jag tro.

Så det kanske är bättre att ta bort LIMIT och sätta en räknare "$i" i while-loopen (där posterna loopas ut) som sedan säger stopp vid "$i = 5"... Eller vad tror du/ni?

Medlem sedan juni 200032 967 inlägg
#6

Du menar att du ska hämta alla poster, trots att du bara ska använda fem? Det låter inte som ett bra förslag.

Hämta de fem du ska använda, och använd en sql-fråga för att räkna poster, antingen separat eller som en subquery.

Medlem sedan jan. 20051 130 inlägg
#7

K! Då gör jag så :)

255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)