Jump to content
php.lv forumi

Recommended Posts

Posted

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.

  • Replies 45
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted

Jaunumi vieta kur uzkrājas jaunumi.....

Jaunumos ir norādīts lietotāj id.....

 

No lietotājiem es izvelku lietotājvārdu...

 

un no komentāriem es gribētu izvilkt katram rakstam komentāru skaitu kas ir ierakstīts....

Posted

normāli šajā gadījumā rakstu tabulai pieliek klāt 'komentaru_skaits'

un kad rakstam pievieno komentaaru,tad

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

Posted

jā šitā es iepriekš meiģināju .....

bet man problēmas radās kad gribēju dzēšot komentāru lai atņemās -1....

 

Vienārši tad vairs nesstrādāja +1 sistēma pievienojot komentāru ...

Posted

Anonīms, domāju, ka arī šajā gadījumā komentāru pievienošanas/izdzēšanas reižu skaits ir par vairākām kārtām zemāks nekā komentāru skaita noskaidrošanas reižu skaits.

Posted (edited)
select count(id) from komentari WHERE jaunuma_id = $_GET['id'] // jaunumu lapaa

 

nevar man liekas tā ka 2 select sapludina vinā lai ietu vienu ceļu...

Edited by goma smile
Posted (edited)

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
Posted

jā šitā es iepriekš meiģināju .....

bet man problēmas radās kad gribēju dzēšot komentāru lai atņemās -1....

 

Vienārši tad vairs nesstrādāja +1 sistēma pievienojot komentāru ...

Posted

"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.

Posted

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

Posted

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ā.

Posted

Cik es sapratu count dos tikai lēnāku ielādi.... Tapē meiģināju velreiz pievienot +1;-1 .....

 

 

Bet prikols tāds ja es pievienoju vai dzēšu komentāru man komentāru skaits tabulā iet mīnusos....

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...