webForumDet fria alternativet

Lägga till en kod i sql-satsen

Databaser & SQL

11 svar · 279 visningar · startad av ampy

Medlem sedan feb. 20011 498 inlägg
Frågan#1

Jag har denna sql-sats:

	sql = 	"SELECT fp.id, fp.id_trad, fp.user_id, fp.message, fp.datum, fp.smiley, ft.subject, ft.locked, ft.smiley, m.username, ft.rum, fi.signatur, fi.signatur_farg, fi.signatur_face, fi.bild, fi.bildlanka, m.forum, a.tecken" & _
		" From forum_posts fp inner join forum_topics ft " & _
		" on ft.id_trad = fp.id_trad " & _
		" left outer join members m on m.id = fp.user_id " & _   
		" left outer join forum_inst fi on m.id = fi.user_id " & _  
		" left outer join affar a on m.id = a.medlemsid " & _   
		" WHERE fp.id_trad = "&id_trad&" order by fp.id asc"

Nu vill jag även lägga till denna kod i sql-satsen:

avg(char_length(fp.meddelande)) as averageLength

Hur ska jag göra det?

Den sista koden ska räkna ut antal tecken per inlägg i genomsnitt för alla inlägg.

Måste jag skapa två sql-satser för detta?

Medlem sedan dec. 200012 464 inlägg
#2

Det går att få fram i en fråga men det är nog effektivast att använda två frågor eftersom du då minimerar resultatmängden.

Medlem sedan feb. 20011 498 inlägg
#3

Men om jag måste ha två frågor måste jag ha den ena i en for och det är väl inte så smart ha skapa ett recordset i en loop?

Då skapas det ju en massor.

Medlem sedan feb. 20011 498 inlägg
#4

Har jag rätt?

Medlem sedan dec. 200012 464 inlägg
#5

Vill du inte ha genomsnittlig meddelandelängd för varje tråd? Din nuvarande fråga returnerar väl alla meddelanden och om du lade till denna uträkning så skulle du returnera samma värde för alla poster. Eller har jag missförstått allt,

Medlem sedan feb. 20011 498 inlägg
#6

Jag vill ha genomsnittlig meddelandelängd för varje medlem.

Medlem sedan dec. 200012 464 inlägg
#7

I så fall har det väl ännu mindre med en viss tråd att göra.

Heter kolumnen message eller meddelande?

select avg(char_length(fp.message)),m.name
 from forum_posts fp inner join members m
   on fp.user_id = m.id
 group by m.id
Medlem sedan feb. 20011 498 inlägg
#8

Jag tänkte skriva ut medlemmens genomsnittliga meddelandelängd vid varje inlägg han/hon gör. Som antal inlägg här på wF. Det visas ju vid varje inlägg.

Medlem sedan dec. 200012 464 inlägg
#9

I så fall skulle du behöva använda skalära subselect vilket inte finns i Mysql. Om du vill kunna få ut allt i en fråga så måste du lagra den uppgiften i member-tabellen (och uppdatera efter varje inlägg.)

Medlem sedan feb. 20011 498 inlägg
#10

Är det prestandakrävande?
Ungerfär hur mycket längre tid tar det att ladda sidan om man ska skriva fram 50 inlägg?

Medlem sedan dec. 200012 464 inlägg
#11

Menar du att göra en extra fråga för varje inlägg för att räkna ut genomsnittet? Det blir säkert märkbart.

Medlem sedan feb. 20011 498 inlägg
#12

Ok, då struntar jag i den funktionen.

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