---
title: "for får den räkna uppåt som DESC likande samt få rätt månad"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/188579-for-får-den-räkna-uppåt-som-desc-likande-samt-få-rätt-månad"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "dwmedia"
published: "2011-12-13T01:41:20.000Z"
updated: "2011-12-19T08:16:25.000Z"
replies: 9
views: 1247
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/188579-for-får-den-räkna-uppåt-som-desc-likande-samt-få-rätt-månad"
---

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

## #1 — dwmedia, 2011-12-13T01:41Z

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

Permalänk: https://www.webforum.nu/p/188579

## #2 — @nders, 2011-12-13T05:38Z

Ok, fett bra info. Tack.

Permalänk: https://www.webforum.nu/p/2289422

## #3 — dwmedia, 2011-12-18T02:31Z

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>
                ";
            }
            ?>
```

Permalänk: https://www.webforum.nu/p/2289537

## #4 — voigtann1, 2011-12-18T07:36Z

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.

Permalänk: https://www.webforum.nu/p/2289539

## #5 — dwmedia, 2011-12-18T07:40Z

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.

Permalänk: https://www.webforum.nu/p/2289541

## #6 — voigtann1, 2011-12-18T07:43Z

Kör en GROUP BY med?

Permalänk: https://www.webforum.nu/p/2289542

## #7 — dwmedia, 2011-12-18T09:10Z

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.

Permalänk: https://www.webforum.nu/p/2289543

## #8 — dwmedia, 2011-12-19T06:38Z

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)) {
```

Permalänk: https://www.webforum.nu/p/2289586

## #9 — voigtann1, 2011-12-19T06:42Z

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.

Permalänk: https://www.webforum.nu/p/2289587

## #10 — dwmedia, 2011-12-19T08:16Z

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 :/

Permalänk: https://www.webforum.nu/p/2289591

---

Tråden på webben: https://www.webforum.nu/amne/php/188579-for-får-den-räkna-uppåt-som-desc-likande-samt-få-rätt-månad
