goma smile Posted February 23, 2009 Report 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
bubu Posted February 23, 2009 Report Posted February 23, 2009 Un kāda saistība ir koments tabulai ar $tbl_name vai lietotaaji? Quote
goma smile Posted February 23, 2009 Author Report 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
anonīms Posted February 23, 2009 Report Posted February 23, 2009 select count(id) from komentari WHERE jaunuma_id = $_GET['id'] // jaunumu lapaa Quote
Klez Posted February 23, 2009 Report 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
goma smile Posted February 23, 2009 Author Report 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
anonīms Posted February 23, 2009 Report 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
Aleksejs Posted February 23, 2009 Report 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
goma smile Posted February 23, 2009 Author Report 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
Klez Posted February 23, 2009 Report 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
goma smile Posted February 23, 2009 Author Report 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
Aleksejs Posted February 23, 2009 Report 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
Gints Plivna Posted February 23, 2009 Report 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
Web Developer Posted February 23, 2009 Report 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
goma smile Posted February 23, 2009 Author Report 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
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.