goma smile Posted February 23, 2009 Report Share Posted February 23, 2009 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. Quote Link to comment Share on other sites More sharing options...
bubu Posted February 23, 2009 Report Share Posted February 23, 2009 Un kāda saistība ir koments tabulai ar $tbl_name vai lietotaaji? Quote Link to comment Share on other sites More sharing options...
goma smile Posted February 23, 2009 Author Report Share Posted February 23, 2009 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.... Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 23, 2009 Report Share Posted February 23, 2009 select count(id) from komentari WHERE jaunuma_id = $_GET['id'] // jaunumu lapaa Quote Link to comment Share on other sites More sharing options...
Klez Posted February 23, 2009 Report Share Posted February 23, 2009 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' Quote Link to comment Share on other sites More sharing options...
goma smile Posted February 23, 2009 Author Report Share Posted February 23, 2009 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 ... Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 23, 2009 Report Share Posted February 23, 2009 klez, tavs variants nav normāls, ja katru dienu jādzēšs ārā vismaz 10 komentāri. Labāk izmantot count un miers. Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 23, 2009 Report Share Posted February 23, 2009 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. Quote Link to comment Share on other sites More sharing options...
goma smile Posted February 23, 2009 Author Report Share Posted February 23, 2009 (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 February 23, 2009 by goma smile Quote Link to comment Share on other sites More sharing options...
Klez Posted February 23, 2009 Report Share Posted February 23, 2009 (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 February 23, 2009 by Klez Quote Link to comment Share on other sites More sharing options...
goma smile Posted February 23, 2009 Author Report Share Posted February 23, 2009 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 ... Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted February 23, 2009 Report Share Posted February 23, 2009 "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. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 23, 2009 Report Share Posted February 23, 2009 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 Quote Link to comment Share on other sites More sharing options...
Web Developer Posted February 23, 2009 Report Share Posted February 23, 2009 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ā. Quote Link to comment Share on other sites More sharing options...
goma smile Posted February 23, 2009 Author Report Share Posted February 23, 2009 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.... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.