webForumDet fria alternativet

for får den räkna uppåt som DESC likande samt få rätt månad

PHP

9 svar · 1 238 visningar · startad av dwmedia

Medlem sedan nov. 2006188 inlägg
Frågan#1

Tog ut allt från mysql gjorde en SELECT istället än fora ut dem :P

Medlem sedan juni 200032 967 inlägg
#2

Ok, fett bra info. Tack.

Medlem sedan nov. 2006188 inlägg
#3

Så där den skriver ut typ så här

14/12 25454 kr SEK
15/12 25454 kr SEK
16/12 25454 kr SEK
17/12 25454 kr SEK
18/12 25454 kr SEK

Men jag vill att den ska skriva 18 först sedan gå neråt.

18/12
17/12
16/12

istället än
16/12
17/12
18/12

Hur får man den foren till ändra riktning.

            <?php
            $cost_start_date = date("d",strtotime("-4 DAY"));
            $cost_end_date = date("d");

            for ($i = $cost_start_date; $i <= $cost_end_date; $i++) {
                $in = $i < 10 ? '0'.$i : $i;
                $coste_year = date("Y",strtotime("-5 DAY"));
                $cost_month = date("m",strtotime("-5 DAY"));
                
                $sql = "
                  SELECT COUNT(*) as h, SUM(a.advertisers_reports_cpc_spent) as b, SUM(a.advertisers_reports_uv_spent) as c, SUM(a.advertisers_reports_cpm) as d,
                  SUM(a.advertisers_reports_cpm_spent) as e, SUM(a.advertisers_reports_lead_spent) as f, SUM(a.advertisers_reports_sale_spent) as g,
                  a.advertisers_reports_aid, a.advertisers_reports_cid, a.advertisers_reports_uid, a.advertisers_reports_cpc_spent,
                  u.advertisers_users_owners, u.advertisers_access_id, u.advertisers_users_currency
                  FROM Advertisers_reports a
                  INNER JOIN Advertisers_users u ON a.advertisers_reports_uid = u.advertisers_users_id
                  WHERE a.advertisers_reports_uid = '$act' AND u.advertisers_users_id = '$act' AND u.advertisers_access_id = '{$_SESSION['sess_id']}' AND u.advertisers_users_admin > '1' AND
                  a.advertisers_reports_yyyy = '$coste_year' AND a.advertisers_reports_mm = '$cost_month' AND advertisers_reports_dd = '$in'
                  ORDER BY a.id DESC LIMIT 1
                ";
                $query  = mysql_query($sql) or die($sql . "<br/>" . mysql_error());
                $result = mysql_fetch_assoc($query);

                if ($result['d'] == "0") {
                $count_cpm_price = "0";
                } else {
                $count_cpm_price = $result['d'] / $result['e'];
                }
                $count_price = number_format($result['b'] + $result['c'] + $count_cpm_price + $result['f'] + $result['g'], 2, ',', ' ');
                echo "
                     <tr>";
                     if($row['advertising_daily_spend_year'] == $yyyy AND $row['advertising_daily_spend_month'] == $mm AND $row['advertising_daily_spend_day'] == $dd){
                       echo "<td class='datetime'>Today</td>";
                     } else {
                       echo "<td class='datetime'>$in/$cost_month</td>";
                     }
                     echo "
                       <td class='spend'>$count_price kr {$result['advertisers_users_currency']}</td>
                     </tr>
                ";
            }
            ?>
Medlem sedan juni 20019 519 inlägg
#4

Du gör ju en fråga per datum... vilket känns om att mySQL borde kunna göra en sådan fråga en gång med between som en fråga.

Medlem sedan nov. 2006188 inlägg
#5

Jo men den tar bara ut dem 5 senaste dagarna.
Själva SQL den räknar bara ihop columerna och värdet.

Kör sedan for tänkte jag för loopa igenom dem 5 senaste dagarna.
Men du får gärna vissa vad som kan va bättre.

Problemet är att ena tabellen har kanske 100.000 lika dana aid cid uid
men ifrån olika datum. Varje dag får den en ny rad.

Medlem sedan juni 20019 519 inlägg
#6

Kör en GROUP BY med?

Medlem sedan nov. 2006188 inlägg
#7

Hur bör man helst ha det

yyyy-mm-dd
eller
yyyy
mm
ddd

Informationen hos mysql så ser det ut som sk vara lättare om man har år månad dag i samma rad.

Medlem sedan nov. 2006188 inlägg
#8

Kan man ta ut värden som inte har något i en INNER JOINE.
id måste matcha alla rader i en INNER JOINE annars loopar dem ju inte ut dem?

Går det inte lösa på något sätt?

Så där ser SQL ut och måste jag verkligen ha en SELECT i en SELECT för grouperna ORDER BY före en GROUP BY?

Tänkte så om det går som man gör med typ DESC, ASC typen?

          $sql = "SELECT COUNT(*) as h, SUM(b.advertisers_reports_cpc_spent) as b, SUM(b.advertisers_reports_uv_spent) as c, SUM(b.advertisers_reports_cpm) as d,
                 SUM(b.advertisers_reports_cpm_spent) as e, SUM(b.advertisers_reports_lead_spent) as f, SUM(b.advertisers_reports_sale_spent) as g,
                 a.id, a.advertisers_campaign_name, a.advertisers_campaign_uid, a.advertisers_campaign_status, a.advertisers_campaign_bugget, a.advertisers_campaign_remaining, a.advertisers_campaign_start_date, a.advertisers_campaign_end_date,
                 b.advertisers_reports_cid,
                 c.advertisers_users_owners, c.advertisers_access_id
                 FROM Advertisers_users c
                 INNER JOIN Advertisers_campaign a ON c.advertisers_users_id = a.advertisers_campaign_uid
                 JOIN Advertisers_reports b ON b.advertisers_reports_cid = a.id
                 WHERE b.advertisers_reports_uid = '$act' AND c.advertisers_users_id = '$act' AND c.advertisers_access_id = '{$_SESSION['sess_id']}' AND c.advertisers_users_admin > '1'
          GROUP BY a.id ASC LIMIT ".$start.",".$antalSida."";
          $result = @mysql_query($sql) or die('<b>Error selecting data from '.$table.'</b><br />'.mysql_error());
          while ($row = @mysql_fetch_assoc($result)) {
Medlem sedan juni 20019 519 inlägg
#9

GROUP BY ersätter inte ORDER BY, det är två helt olika saker. Du plockar inte bort order by om du vill göra en sortering.

Medlem sedan nov. 2006188 inlägg
#10

Hur kan man få den till lista även dem som inte har något i raport?
INNER JOINE tar som sagt bara ut det som finns i alla a3 tabeller.

Säg om ett group inte har fått en insättning i rapport så visas inte kampajnen för tills den får det :/

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)