Artenis Posted October 17, 2008 Report Share Posted October 17, 2008 Vai ir iespējams saskaitīt konkrētos rows nelietojot COUNT iekš query="select * ...."; Bišk ne tā iesāku vienu lietu darīt un tādēļ šāds variants būtu svētīgākais, kur var saskaitīt rows bez COUNT iekš query... Paldies par info! Link to comment Share on other sites More sharing options...
bubu Posted October 17, 2008 Report Share Posted October 17, 2008 Kas vainas COUNT'am? COUNT ir tieši tam domāts - skaita noteikšanai. P.S. ar "php un php :)" te ir maz sakars btw. Link to comment Share on other sites More sharing options...
Klez Posted October 17, 2008 Report Share Posted October 17, 2008 (edited) piemeeram ... $datu_masa = mysql_query("SELECT id,pid,sid,tid,lid FROM tabulas"); $cik_rindiņas_atgrieztas = mysql_num_rows($datu_masa); Un vispār manuāli tas ir rakstīts ... http://lv.php.net/mysql mysql_num_rows — Get number of rows in result Un ja ir traki gruuti ar angļu valodu, paņemam gūgli palīga ... (neieteiktu ... traks var palikt) Edited October 17, 2008 by Klez Link to comment Share on other sites More sharing options...
bubu Posted October 17, 2008 Report Share Posted October 17, 2008 Nu tādu kodu, Klez, kā tu uzrakstīji jau nav problēmu aizstāt ar: $datu_masa = mysql_query("SELECT COUNT(*) FROM tabulas"); list($cik_rindiņas_atrastas) = mysql_fetch_row($datu_masa); Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 17, 2008 Report Share Posted October 17, 2008 Nu neskaitīt bez count(*), ja tik tiešām skaitu tik vajag var būt diezgan ēdelīgs pasākums. MySQLā, cik atceros, count(*) vienkārši no tabulas varēja nolasīt kaut kā lētā veidā, jo tas tika glabāts un sinhronizēts (???). Palabojiet, ja es te kaut ko laižu dēlī :) Otrkārt ir tas, ka count(*) atgriež tieši count un viss. A citādi tev nāksies tos idus izgriezt cauri tīklam un nedod Dies vēl izdomāsi nevis tikai idus, bet visu rindu :) Tas būtu salīdzināms ar to, ka Tu tā vietā, lai telefongrāmatā saskaitītu esošos telefona numurus, ņem un visus tos pārraksti :) Un vai tad MySQLā nebija iespēja rakstīt inline view: SELECT count(*) FROM ( SELECT blahbalah FROM blahblah) Iespējams gan tas bija atkarīgs no versijas, nav laika tagad dokus pētīt. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
andrisp Posted October 17, 2008 Report Share Posted October 17, 2008 Man liekas, ka no šitā nav pilnīgi nekādsa jēgas: SELECT count(*) FROM ( SELECT blahbalah FROM blahblah) Link to comment Share on other sites More sharing options...
Klez Posted October 17, 2008 Report Share Posted October 17, 2008 bet autors jau negribeeja lietot count ieksh select ... aatrdarbiibaa noteiktu shitas buut aatraaks SELECT COUNT(*) FROM tabulas Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 17, 2008 Report Share Posted October 17, 2008 (edited) Man liekas, ka no šitā nav pilnīgi nekādsa jēgas: No tā ir jēga tad, ja Tev ir gatavs vaicājums, kuru Tu negribi/nevari nekā modificēt, bet gribi izmantot, lai noskaidrotu, cik rindas atgriež, tad oriģinālo ieliec tai apakšvaicājumā un aiziet. Arī garantija lielāka, ka kādu distinct nepalaidīsi garām. Vispār neizmantot count(*) kā šķiru selectos es tiešām neredzu nekādu jēgu. Gints Plivna http://datubazes.wordpress.com Edited October 17, 2008 by Gints Plivna Link to comment Share on other sites More sharing options...
blackhalt Posted October 17, 2008 Report Share Posted October 17, 2008 Kādēļ nevar izmantot COUNT(id)? Kādēļ vajag uzreiz to COUNT(*)? Link to comment Share on other sites More sharing options...
Klez Posted October 17, 2008 Report Share Posted October 17, 2008 gan jau ka var ... Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 17, 2008 Report Share Posted October 17, 2008 Kādēļ nevar izmantot COUNT(id)?Kādēļ vajag uzreiz to COUNT(*)? Vispārīgā gadījumā tas nav viens un tas pats. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Roze Posted October 17, 2008 Report Share Posted October 17, 2008 Ja pieņemam ka 'id' ir vienmēr eksistējoša (autincrement/sekvence), tad var izmantot, bet tā COUNT(lauks) atgriež 'lauks' ne-NULL vērtību ieraukstu skaitu. Attiecīgi ja lauks ir iespējams ar NULL vērtībām tad COUNT(*) un COUNT(lauks) var atšķirties.. p.s. MySQL gadijumā COUNT(*) uz InnoDB ir source of evil.. Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 17, 2008 Report Share Posted October 17, 2008 (edited) Id var pat būt vienmēr eksistējošs, bet neaizpildīts konkrētajā vaicājumā, piemēram, dēļ ārējā savienojuma ;) Tā kā tiešām vien`mer to ir vērts atcerēties - "atgriež 'lauks' ne-NULL vērtību ieraukstu skaitu". p.s. MySQL gadijumā COUNT(*) uz InnoDB ir source of evil.. Mhm varbūt sīkāk varētu? :) Vai arī tas bija tas ko stāstīja Jay Pipes, ka lasa cauri visu tabulu? Es tā arī nesapratu no viņa atbildes, ja tur ir PK indekss, tad viņš lasa no indexa vai nē? Jo nu teiksim man kā pieradušam pie Oracles, variants, ka count(*) iegūst pēc PK indexa pilnībā apmierina, iespējams, ka cilvēkiem, kas ir pieraduši pie MySQL (ISAM?) tabulu momentānā skaita atgriešanas, tas liekas neparasti :) Gints P.S. Šeit gan laikam ir arī atbilde uz manu jautājumu P.P.S. Manuprāt gan jebkurš count(*) patiesībā ir atskaite un atskaites neviens cilvēks normāli katrā reizē neiegūst un pārāk bieži nepieprasa :) Edited October 17, 2008 by Gints Plivna Link to comment Share on other sites More sharing options...
Recommended Posts