Jump to content
php.lv forumi

Vai ir iespējams saīsināt?


ziedinjsh

Recommended Posts

$result = mysql_query("SELECT * FROM report WHERE type='payment'"); 
$payment = mysql_num_rows($result); 

$result = mysql_query("SELECT * FROM report WHERE type='bug'"); 
$bug = mysql_num_rows($result); 

$result = mysql_query("SELECT * FROM report WHERE type='advice'"); 
$advice = mysql_num_rows($result); 

Edited by ziedinjsh
Link to comment
Share on other sites

Nu cik nu saīsināt... Bet atceries, ka ne vienmēr īsāks kods būs labāks. Lasīšanas ērtums ir noteicošais, kas "saīsinātajā" variantā ciešs. =(

 

$payment = mysql_num_rows( mysql_query( "SELECT * FROM report WHERE type='payment'" ) );

 

P.S. Pietam, zvaigznīti izmantot (runāju par pieprasījumu) izmantot nav ieteicams "production" kodā.

Link to comment
Share on other sites

Ierakstu skaitīšanai ir paredzēta MySQL COUNT() funkcija. Tu šobrīd vienkārši lieki tērē resursus.

SELECT COUNT(IF(`type` = 'payment', 1, NULL)) AS `payment`, COUNT(IF(`type` = 'bug', 1, NULL)) AS `bug`, COUNT(IF(`type` = 'advice', 1, NULL)) AS `advice` FROM `report`

Šis strādā apmēram tik pat ātri kā skaitīt katru type atsevišķi ar UNION ALL

Link to comment
Share on other sites

Ja vajag tikai skaitu, tad tas pirmais variants ir kaut kādas šausmas un ārprāts. Iedomājies Tev ir 3 grāmatplaukti, kurā ir akurāti saliktas grāmatiņas, kurām visām var redzēt muguriņas. Tā vietā, lai kaut vai pirkstu piedurot pie katras tās saskaitītu, grāmatas tiek ņemtas ārā no visiem 3 plauktiem un akurāti kraujot zemē saskaitītas :)

 

Cik nu var spriest pēc sākotnējā koda fragmenta, tad xPtv45z dotais variants ir īstais.

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Ierakstu skaitīšanai ir paredzēta MySQL COUNT() funkcija. Tu šobrīd vienkārši lieki tērē resursus.

SELECT COUNT(IF(`type` = 'payment', 1, NULL)) AS `payment`, COUNT(IF(`type` = 'bug', 1, NULL)) AS `bug`, COUNT(IF(`type` = 'advice', 1, NULL)) AS `advice` FROM `report`

Šis strādā apmēram tik pat ātri kā skaitīt katru type atsevišķi ar UNION ALL

 

un kā es varu viņu atsevišķi izvadīt?

 

piem tagad mani ir

 

$payment $bug un $advice

Link to comment
Share on other sites

Es domāt', ka kaut kā šitā...

 

$query = mysql_query(" SELECT COUNT(IF(`type` = 'payment', 1, NULL)) AS `payment`, COUNT(IF(`type` = 'bug', 1, NULL)) AS `bug`, COUNT(IF(`type` = 'advice', 1, NULL)) AS `advice` FROM `report` ") or exit( mysql_query() );

$database = mysql_fetch_row( $query );


echo $database['payment'];

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...