2013-05-24 7 views
5

Używam następujących czynności, aby spróbować i wyjście moje miesięczne sumy w formacie takim jak:miesięczne sumy miesięcy powrocie NULL, a tylko wyprowadzanie działa całkowitą

January 
Quoted Total : £678 
Parts Total : £432 
Profit Total : £244 

February 
Quoted Total : £650 
Parts Total : £345 
Profit Total : £123 

etc ..........

// Work Complete Totals 
    $query = $db->query("SELECT SUM(pricequoted) AS pricequotedtotal, 
           SUM(partprice) AS partpricetotal, 
           SUM(profit) profittotal, 
           DATE_FORMAT('%Y-%m', completeddate) AS month 
         FROM `jobdetails` 
         WHERE jobstatus='complete' 
         GROUP BY DATE_FORMAT('%Y-%m', completeddate)"); 


    echo '<div style="float:right; padding-right:10px;">'; 
    echo '<strong>Work Complete Totals</strong>'; 

    while($result = $query->fetch_object()) { 

     $pricequoted = number_format($result->pricequotedtotal, 2, '.', ''); 
     $partprice = number_format($result->partpricetotal, 2, '.', ''); 
     $profit  = number_format($result->profittotal, 2, '.', ''); 

     echo '<p><strong style="color:red;">Quoted Total : &pound;'.$pricequoted.'</strong></p>'; 
     echo '<p><strong style="color:Darkorange ;">Parts Total : &pound;'.$partprice.'</strong></p>'; 
     echo '<p><strong style="color:green;">Profit Total : &pound;'.$profit.'</strong></p>'; 
    } 

    echo '</div>'; 

problem otrzymuję jest to, że jest wyprowadzanie tylko sumy działa, więc pojawia się następujący u dołu strony raz, ale nic więcej:

Work Complete Totals 
Quoted Total : £1460.00 

Parts Total : £541.43 

Profit Total : £918.57 

Jeśli uruchomię powyższe zapytanie w phpMyAdmin otrzymuję wynik:

pricequotedtotal partpricetotal profittotal  month 
     1460    541.43  918.5699999999998 NULL 

Układ moim stole jest następujący:

id customerID name facebookuserurl tel email address itemforrepair repairdetails otherdetails pricequoted partprice profit datepartordered jobstatus dateofcompletion datecreated itemnumber 

Poniżej znajduje się wiersz próbki:

49 37ac4 Ellen Frost https://www.facebook.com/ellen.mccormick.18    Galaxy S3 (Fullsize) Blue Broken front glass and also digitiser not working. Quoted customer on whole lcd, digitiser assembly r... 140 114.98 25.02 2013-05-02 complete 2013-05-08 2013-05-01 251258104217 

EDYCJA >> Poniżej znajduje się zrzut ekranu z kilku rzędów w tabeli. enter image description here

EDIT >>

To moja struktura tabeli: enter image description here

+0

Co robi mysqli z tym pytaniem? To zwykłe API uruchamia twoje zapytanie. Wolę oznaczać to za pomocą SQL niż mysqli. –

Odpowiedz

6

Trzeba zmienić to

DATE_FORMAT('%Y-%m', completeddate) 

do

DATE_FORMAT(completeddate, '%Y-%m') 

Dlatego masz NULL w kolumnie month a zatem tylko jeden wiersz.

Zobacz manual entry.

+0

Kiedy zmienię to, nie otrzymuję żadnej sumy. –

+0

Ahh, teraz działa, iv zmienił także inne bity. –

+0

Miło to słyszeć :) – fancyPants

4
SUM(pricequoted) AS pricequotedtotal, 
SUM(partprice) AS partpricetotal, 
SUM(profit) profittotal, 

Powinny być

SUM(pricequoted) AS pricequotedtotal, 
SUM(partprice) AS partpricetotal, 
SUM(profit) AS profittotal, 

przegapiłeś "AS"

+0

To nie wyświetla niczego, co jest –

+0

Wszystko, co otrzymuję, to nagłówek "Pełne wyniki pracy" i nic pod nim. –

+0

Wymień go na swój. Tęskniłeś za czymś. –

4

Cóż można spróbować to zapytanie

SELECT SUM(pricequoted) AS pricequotedtotal, 
     SUM(partprice) AS partpricetotal, 
     SUM(profit) AS profittotal, 
     MONTHNAME(completeddate) AS month 
      FROM `jobdetails` 
     WHERE jobstatus='complete' 
      GROUP BY MONTH(completeddate) 

Kolumna „completeddate” nie istnieje w tabeli powyżej, zamiast użyć „dateofcompletion”

tak, to działa kwerendy i umieszczając je w while pętli wyprodukuje dokładnie to, co chciałeś

Widziałem również strukturę twojej tabeli, lepiej sformatować tabelę nieco, używając varchar, int, float itd.text kolumny zużywają więcej pamięci

http://www.pythian.com/blog/text-vs-varchar/

http://nicj.net/mysql-text-vs-varchar-performance/

5

Ian

Chyba następujące zapytanie pomoże.

SELECT suma (pricequoted) jako pricequotedtotal Sum (partprice) jako partpricetotal Sum (zysku) profittotal, MONTHNAME (dateofcompletion) Z jobdetails GDZIE jobstatus = 'kompletna' grupa PRZEZ DATE_FORMAT (dateofcompletion, Y '%% m') zamówienie według daty ukończenia;

 

    +------------------+----------------+-------------+-----------------------------+ 
    | pricequotedtotal | partpricetotal | profittotal | MONTHNAME(dateofcompletion) | 
    +------------------+----------------+-------------+-----------------------------+ 
    |    140 |   114.98 |  25.02 | May       | 
    |    140 |   114.98 |  25.02 | June      | 
    +------------------+----------------+-------------+-----------------------------+ 
2 rows in set (0.00 sec) 
Powiązane problemy