Jump to content
php.lv forumi

divi count, join.. utt..


Pentiums

Recommended Posts

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
Link to comment
Share on other sites

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

:)

 

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
Link to comment
Share on other sites

×
×
  • Create New...