Avatar billede heyn Nybegynder
04. december 2013 - 07:20 Der er 4 kommentarer og
1 løsning

Sum af poster i tabel.

Hej Eksperter

Jeg har 2 tabeller orders og order_item som jeg med en join henter visse data fra i en SQlite database.

Data er sorteret efter 1. deres orders oprettelsesdag og 2. orders_item's værdi cate_no.

Jeg søger på oprettelsesdagene.

order_item indeholder en værdi sale_price.

Jeg ønsker at summere alle order_item's sale_price inden for hver cate_no tilhørende en specifik timestamp.

Har jeg en specifik periode ønsker jeg at summere alle salg men opdelt efter cate_no og oprettelsesdag

Lad os sige at jeg en dag har solgt 2 varer af en type cate_no og 3 varer af en anden type cate_no og en anden dag har solgt en 2 af en type cateno.

Så skal jeg have et resultat der indeholder 3 resultater med 3 værdier: sum, cate_no og oprettelsesdag.

Håber nogle kan hjælpe mig.

Venligst Christian
04. december 2013 - 09:09 #1
Jeg kender ikke SQlite, så jeg baserer mig på mysql som kategorien er.  Yderligere gætter jeg (for du fortæller det ikke) at hver order har en id, og tabellen order_item har et felt 'order' som svarer til ordren's id.  Så må løsningen være noget i denne henretning (ikke testet):

SELECT oprettelsesdag, cate_no, SUM(værdi)
FROM orders
JOIN order_item ON orders.id = order_item.order
GROUP BY oprettelsesdag, cate_no
Avatar billede heyn Nybegynder
04. december 2013 - 12:21 #2
Mit statement er:

SELECT
cate_no, transaction_submitted, cate_name, product_no, current_subtotal
FROM
orders INNER JOIN order_items ON order_items.order_id = orders.id
WHERE
transaction_submitted >= <EN_TIMESTAMP> AND transaction_submitted <= <EN_ANDEN_TIMESTAMP>
ORDER BY
transaction_submitted, cate_no;

Jeg får alle de rette poster med dette statement.

order_item er de enkelte solgte varer i en ordre. Den samme vare kan godt optræde flere gange i en ordre, og flere varer kan tilhøre samme categori.

current_subtotal tilhører order_item og angiver hvad varen blev solgt for på indeværende tidspunkt.

transaction_submitted tilhører orders og angiver hvornår et salg gennemføres.

Problemet er at jeg, på en eller anden vis vil indføre en SUM således at alle current_subtotal bliver summeret på hver dato.

ydermere skulle transaction_submitted gerne laves om en lign. timestamp visende kl. 0:00 den indeværende dag

Altså hvis 2 salg på samme dag indeholder samme cate_no skal current_subtotal summeres. Men er der 2 cate_no i hver af salgene den dag skal de to cate_no's current_subtotal's summeres hver for sig.

Endvidere må der kun summeres på den enkelte dag. Strækker perioden sig over flere dage skal der summeres separat for hver dag.

Men kan det overhovedet lade sig gøre?

Venligst Christian
04. december 2013 - 15:28 #3
Det med datoen har jeg prøvet at besvare i dit spørgsmål http://www.eksperten.dk/spm/988868 .

Hvad resten angår, så forstår jeg, at du for et tidsrum vil have både detaljer og summe af transaktionerne.  Det kan lade sig gøre, men ikke (med mindre jeg tager meget fejl) ikke i en enkel query.  Jeg kan se fra dit andet spørgsmål, at du behandler dine udtræk i php.  Jeg vil foreslå, at du fra php sender to queries til sql, først dit ovennævnte, og derefter en sum query i retning af min #1.  I php bruger du så de to resultater til at formattere og præsentere det du vil se.
Avatar billede heyn Nybegynder
05. december 2013 - 09:30 #4
Hej Christian_Belgien.

Du har ret - Jeg anvender php.

Jeg problemet i php ved, når jeg havde fået mit resultat i et array[0] kaldet $res_arr lavede følgende

$res_arr = $res_arr[0];
$result = array();
foreach ($res_arr as $res){
  $res[0]['transaction_submitted'] = date('y-m-d',$res[0]['transaction_submitted']);
  array_push($result,$res[0]);
}

Så har jeg senere yderligere splittet $result op i et array hvor hver nøgleværdi er en category.

Læg et svar (også på det andet spørgsmål :)

Venligst fra en anden Christian med familie i Belgien.
05. december 2013 - 11:09 #5
Svar fra mig.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Danske Commodities A/S

IT Systems Engineer

Netcompany A/S

IT Consultant

Blue Water Shipping A/S

Senior Developer