Jump to content
php.lv forumi

count


goma smile

Recommended Posts

SELECT * FROM $tbl_name JOIN lietotaaji ON $tbl_name.jaunumu_addid=lietotaaji.user_id  ORDER BY id DESC LIMIT $start, $limit

 

Tabula kur uzglabājās komentāri sauc koments un atpazīst pēc id ar jaunumu_id .

 

 

Vai kāds lūzu nevarētu šajā tabulā pielikt klāt count funkciju pareizi, jo man nesanāk saskaitīt komentārus pie katra jaunuma raksta.

Link to comment
Share on other sites

  • Replies 45
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

anonīms, mans variants ir ļoti normāls ja ir jādzēš pa dienu kaut vai 100 komentāri ...

 

 

ja dzēš tad taisām:

UPDATE raksti SET komentaru_skaits = komentaru_skaits - 1 WHERE raksta_id = '$raksta_id'

 

tas manupraat ir mazaak resursu eedeliigs nekaa katru reizi pie raksta ielaades taisiit veel vienu selektu ...

Edited by Klez
Link to comment
Share on other sites

"Sistēmai" bija jāstrādā - tātad kaut kur būsi kļūdījies.

 

Bet nu ja pieņemam, ka raksti ir tabulā jaunumi:

jaunumi

---------

id

...

 

un komentāri ir tabula:

komentari

----------

id

raksta_id

 

Tad sarakstu ar visiem rakstiem, kur katram rakstam blakus tā komentāru skaits, var iegūt (ja vien kārtējo reizi neesmu kļūdījies):

SELECT r.id, r.`pārējie lauki`, (SELECT count(k.id) FROM komentari AS k WHERE k.raksta_id = r.id) AS skaits FROM jaunumi AS r

 

Taču es izmantotu Klez ieteikto variantu.

Link to comment
Share on other sites

Vai sekojot Alekseja tabulu nosaukumiem:

 

select r.id, count(k.id)
from jaunumi r
left join komentari k
on (r.id = k.raksta_id)
group by r.id

Attiecīgi jāpapildina gan select saraksts, gan group by saraksts ar nepieciešamajām citām kolonām no jaunumiem.

Pievienojos tam, ka ļoti ticami, ka šādi selecti būs n reizes vairāk kā dažas komentāru dzēšanas un izdevīgāk ir lietot atvasinātu lauku.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Vispirms izdariet loģiskos secinājumus:

1) komentāru skaitļa uzģenerēšana būs nepieciešama katram apmeklētājam, taču komentāru rakstīšanas iespēju izmantos tikai daļa no viņiem. Līdz ar to komentāru "INSERT" būs krietni mazāk nekā "SELECT".

2) no pirmā izriet, ka labāk būtu veikt vienkāršotāku tieši SELECT vaicājums, nevis INSERT.

3) no abiem iepriekšējiem izriet, ka acīmredzot, gana labs variants būtu Jaunumu tabulā ievietot lauku "Komentāru skaits", kur glabātos esošam jaunumam piederošo komentāru skaits (default 0).

4) izpildot iepriekš minēto punktu, iespējams ir nepieciešams trigeris komentāru tabulai, kad veicot INSERT un DELETE darbības tajā, notiek attiecīgās izmaiņas atbilstošajā Jaunumu tabulas ieraksta laukā "Komentāru skaits".

5) viss, protams, trigera vietā var ierakstīt papildus vaicājumu kodā.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...