Jump to content
php.lv forumi

MySQL GROUP BY


AcidRain

Recommended Posts

nepiekritīšu Tev, des. KĀRTOT PIRMS GROUP BY nebūs pareizi, jo imho neviena DB nesaka, kādā secībā iedos sagrupētos rezultātus. manuprāt kārtošana jāveic pēc GROUP BY.

***

doma ir, ka ir viens selects, kuraa vispirms sakaartojam datus vajadziigaa kaartiibaa, peec tam jau no shii selecta rezultaatiem veicam selectu, kuram tad ir tas group by.

***

shiis teemas jautaajums bija, kaa ietekmeet pashu group by, ja neizmanto nevienu agregaatfunkciju :)

 

arii

 

"select n,t,max(i) as mi from tbl

group by n

order by mi"

 

nekaadi nespeej ietekmeet kolonnas t veertiibu - group by vienkaarshi panjem pashu peedeejo (kura ir peedeejaa, to zina tikai jamais pats :) ).

arii tas, ka katraa grupaa veel ieselekteejam max(i), min(i), whatever(i) nekaadi nespeej ietekmeet t veertiibu :) un order by peec group by vairs neko nespeej ietekmeet :)

 

tikko paarbaudiiju, ka Oracle, piemeeram, uzreiz pie

"select n,t from tbl group by n "

izmet, ka t "is not a group by expression".

taa luuk.

 

taa kaa nav, ko briiniities, ka SQL specificaacijai neatbilstoshi queriji, kurus mysql tomeer palaizh cauri, izdod gljukainus rezultaatus :)

Link to comment
Share on other sites

A vaicājums tāds radās tādēļ, ka ir tabula ar miljons ierakstiem, no kuriem ik pa pieciem vai vairāk ierakstiem ir piesaistīti pie citas tabulas vienu ierakstu.

Tāllāk selektējot tās otrās tabulas kaut kādsu tur ierakstus gribēju piesaistīt pirmās tabulas pēdējo ierakstu, nesanāca :(

 

Apmēram tā.

Link to comment
Share on other sites

Mjā, problēmas nostādne loģiska.

Risinājumi ir, be nav ļoti lakoniski.

1) īzvēlēties bez group by nosacījuma, bet ar order desc, tīri pie izvada čekot

if ($current_parent==$previous_parent)

continue;

db ar miljoniem rakstu nederēs

2) ievietotjot jauno "komentāru", updeitot "flag" tipa kolonnu, kura pasaka kurš tad ir tas pēdējais raksts, e.g.

 

UPDATE comments SET `islast`=0 WHERE `parent`=$x

INSERT INTO comments ... `parent`=$x,islast=1

 

SELECT articles.*,comments.* FROM articles

RIGHT JOIN comments ON comment.`parent`=article.uID

AND/WHERE comments.islast=1

 

3) aizgāju rakstīt MySQLam feature request

Link to comment
Share on other sites

×
×
  • Create New...