Dette giver et output som ser sådant her ud : Breakdown of Members by Type Member Type No. Company 16 Consultant 5 Job Seeker 42 Supplier 5 Sub-Contractor 10
Det jeg nu gerne vil er at der skal laves en count mere i forespørgslen, som tæller på følgende felt "pay_end_date" (dette felt indeholder udløbsdato)
dvs. der skal tælles antal hvor pay_end_data er STØRERE end dags dato (formatet er det der fåes fra time() komandoen.... )
der tilføjes således en ekstra variabel i mit udtræks arry ala : while ($row = $conn->fetcharray($rs)) { $template->assign_block_vars('type_row', array( 'CC_TYPE' => $types[$row['type']], 'CC_CNT' => $row['cnt'], 'CC_CNT_PAY' => $row['pay'] )); }
Men hvordan ser min sql streng ud når der er 2 counts og den ene skal tjekke på om en given værdi er stører ???
er ikke helt inde i count...men tror måske at dette vil virke? $sql = "SELECT type, count(*) as 'cnt', COUNT(pay_end_date>now()) as antal_stoerre FROM contacts GROUP BY type" ;
sql'en ser nu sådant her ud : $sql = "SELECT type, count(*) as 'cnt', SUM(CASE WHEN pay_end_date > NOW() THEN 1 ELSE 0 END) as 'cnt_pay' FROM contacts GROUP BY type";
men den skriver kun 0 i cnt_pay variablen eftergølgende trods der er forekomster... bytter jeg om på 1 og 0 i WHEN sektionen, hiver den det totale antal ud (altså også dem hvor pay_end_date er mindre....
kom til at tænke på om NOW() er i formatet unix timestamp - sec. siden 1970... ??
For hvis jeg istedet opretter en variabel inden sql'en indeholdende time() og kalder SUM(CASE WHEN pay_end_date > $nutid THEN 1 ELSE 0 END) så får jeg faktisk det korekte antal ud....
Det har sikkert ikke nogen nævneværdig effekt på udtrækstiden om jeg bruger det ene eller det andet, men kan det holdes i ren sql kode så er det vel det hurtigste....
I stedet for NOW() bruger du vel så bare UNIX_TIMESTAMP()?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.