Pentiums Posted January 18, 2009 Report Share Posted January 18, 2009 (edited) ir tabulas forumi |id|sadalas_id|forums|utt.. temas |id|foruma_id|tema|utt.. ieraksti |id|temas_id|ieraksts|utt.. Līdzīgi kā šī foruma sākumlapā, gribu izlaist visus forumus, katram saskaitīt tēmu un ierakstu skaitu. Uzrakstīju šādu SQL pieprasījumu SELECT forumi.*, COUNT(temas.id) as temas_skaits FROM forumi LEFT JOIN temas ON temas.fid=forumi.id WHERE forumi.sadalas_id = '$padodam_id' GROUP BY temas.id ORDER BY forumi.forums ASC Kā lai pieknibina klāt ierakstu skaitītāju? ieraksti grupējas pēc tēmas ID, tēmas grupējas pēc foruma ID Edited January 18, 2009 by Pentiums Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 18, 2009 Report Share Posted January 18, 2009 Jākombinē esošās zināšanas :) Kā dabūsi visus forumus, tēmas un ierakstus kopā? Ar left join (ja nu kāds ieraksts trūkst). Kā dabūsi skaitu? Ar count. Kā dabūsi 2 skaitus? Ar diviem count. Kā dabūsi grupējot pa forumiem? Ar group by. Kā dabūsi to, lai viena un tā pati tēma neskaitās n reizes, ja tai ir n ieraksti? Ar distinct. Atliek tikai salipināt. Dati: mysql> select * from forumi; +--------+------------+ | frm_id | frm_nos | +--------+------------+ | 1 | Oracle | | 2 | MySQL | | 3 | SQL Server | +--------+------------+ 3 rows in set (0.00 sec) mysql> select * from temas; +--------+------------+---------+ | tem_id | tem_frm_id | tem_nos | +--------+------------+---------+ | 1 | 1 | a | | 2 | 1 | b | | 3 | 2 | c | +--------+------------+---------+ 3 rows in set (0.00 sec) mysql> select * from ieraksti; +--------+------------+---------+ | ier_id | ier_tem_id | ier_sat | +--------+------------+---------+ | 1 | 1 | a | | 2 | 1 | b | | 3 | 2 | c | +--------+------------+---------+ 3 rows in set (0.00 sec) SQL teikums: mysql> select count(distinct tem_id) temu_skaits, -> count(distinct ier_id) ierakstu_skaits, -> frm_id, frm_nos -> from forumi -> left join temas on (frm_id = tem_frm_id) -> left join ieraksti on (tem_id = ier_tem_id) -> group by frm_id, frm_nos; +-------------+-----------------+--------+------------+ | temu_skaits | ierakstu_skaits | frm_id | frm_nos | +-------------+-----------------+--------+------------+ | 2 | 3 | 1 | Oracle | | 1 | 0 | 2 | MySQL | | 0 | 0 | 3 | SQL Server | +-------------+-----------------+--------+------------+ 3 rows in set (0.00 sec) Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Pentiums Posted January 18, 2009 Author Report Share Posted January 18, 2009 Tu rullē :) Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 18, 2009 Report Share Posted January 18, 2009 gggg šādu novērtējumu es vēl nekad nebiju saņēmis :D Link to comment Share on other sites More sharing options...
Pentiums Posted January 18, 2009 Author Report Share Posted January 18, 2009 (edited) :) Viss strādā, tikai kā man izdabūt ar šo pašu kveriju pēdējo tēmu? tāpat kā šeit, ja ir kādi tēmai jauns ieraksts, tad parāda tēmu ar jaunāko ierakstu EDIT: IZDOMĀJU :) Edited January 18, 2009 by Pentiums Link to comment Share on other sites More sharing options...
Recommended Posts