SELECT COUNT(o.orders_id) AS antal, SUM(t.value) AS value, customers_country FROM `orders` o JOIN `orders_total` t ON o.orders_id = t.orders_id WHERE orders.date_purchased LIKE "%2011-02%" GROUP BY customers_country
Virker næsten, og alligevel ikke - orders.date_purchased LIKE "%2011-02%" bliver nu ignoreret, og i stedet er den en sammentælling for alle ordre:
SELECT COUNT(o.orders_id) AS antal, SUM(t.value) AS value, customers_country FROM `orders` o JOIN `orders_total` t ON o.orders_id = t.orders_id WHERE o.date_purchased LIKE "%2011-02%" GROUP BY customers_country
Det er fordi det er mig der er en klokker - date_purchased sidder i orders_total der har alias t, saa det skal vaere WHERE t.date_purchased LIKE "%2011-02%" . Beklager.
Jeg lavede for test, da jeg kom med forslaget, to tabeller straszek_orders og straszek_values med nedenstaaende indhold og denne query:
SELECT COUNT(o.id) AS antal, SUM(t.value) AS value, customers_country FROM straszek_orders o JOIN `straszek_values` t ON o.id = t.id WHERE o.date_purchased LIKE "%2011-02%" GROUP BY customers_country;
og det gav dette resultat som er korrekt ifoelge tabellerne:
antal value customers_country 4 1400 country1 1 600 country2
Hvis den ikke sorterede for dato ville den foerste raekke have vaerdierne 5 1500 country1
Hvad har du i tabellerne? Hvad er datatypen for datoen?
dato_purchase er et date time felt f.x. 2011-02-26 10:43:11
bruger jeg den oprindelig sql:
SELECT COUNT( * ) AS antal, customers_country FROM `orders` WHERE orders.date_purchased LIKE "%2011-02%" GROUP BY customers_country LIMIT 0 , 30
Se resultatet således ud: 1 Australia 1 Austria 3 Belgium 1 Denmark 5 Finland 1 France 30 Germany 1 Greenland 4 Netherlands 3 Norway 1 Russian Federation 9 Sweden 19 Switzerland 1 United Arab Emirates 8 United Kingdom
og det er rigtigt, bortset fra at der mangler sammentælling af beløb
Bruger jeg din: SELECT COUNT(o.orders_id) AS antal, SUM(t.value) AS value, customers_country FROM `orders` o JOIN `orders_total` t ON o.orders_id = t.orders_id WHERE o.date_purchased LIKE "%2011-02%" GROUP BY customers_country
Se resultatet således ud:
5 524.8000 Australia 6 895.4000 Austria 12 760.3400 Belgium 6 208.4000 Denmark 30 2235.0000 Finland 6 1586.2000 France 164 18365.6000 Germany 4 368.4000 Greenland 24 1007.4000 Netherlands 10 1022.8000 Norway 5 402.0000 Russian Federation 54 3713.8000 Sweden 87 8068.2000 Switzerland 5 192.4000 United Arab Emirates 48 2845.4000 United Kingdom
Og det er som sagt ikke korrekt, da det ikke tager højde for date_pruchase, men medtager alle ordre i sammentællingen
Det foelgende burde ikke goere nogen forskel, men du kunne da proeve ikke at bruge aliaser, altsaa queryen
SELECT COUNT(*) AS antal, SUM(value) AS value, customers_country FROM `orders` JOIN `orders_total` ON `orders`.orders_id = `orders_total`.orders_id WHERE date_purchased LIKE "%2011-02%" GROUP BY customers_country
Saa grunden til at antal linjer per country var hoejere var ikke at den ikke tog datoer med men at den talte antal af values i order_total. Jeg kunne heller ikke forstaa hvad der pludselig kunne vaere i vejen med filteret paa dato.
strszek, jeg forstod paa dig at problemet i spoergsmaalet er loest. Forventer du alligevel flere indlaeg i denne traad eller forventer du mere af mig eller har du flere spoergsmaal i sagen? Ellers vil jeg bede dig lukke spoergsmaalet. Hvis du ikke mener at kunne acceptere mit svar saa maa du selv oprette et svar og acceptere mig. Men lad mig ikke haenge i et aabent spoergsmaal. Please.
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.