Jump to content
php.lv forumi

Recommended Posts

Posted (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 by Pentiums
Posted

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

Posted (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 by Pentiums
×
×
  • Create New...