Alle weken van het jaar selecteren
Ik haal mbv een query het totaal van alle afboekingen van een artikel op per week.
Nu krijg ik alleen de weken waarin ook daadwerkelijk afboekingen gedaan zijn, de weken met totaal 0 worden weggelaten.
Ik wil dat als er in een week geen afboeking gedaan zijn, het totaal 0 is voor die week
de query:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$query = mysql_query("SELECT
SUM(aantal) AS totaal,
WEEKOFYEAR(datum_tijd) AS week_nummer,
YEAR(datum_tijd) AS jaar
FROM vobis_af_bij
WHERE artikel_code = '$artikel'
GROUP BY YEAR(datum_tijd),WEEK(datum_tijd)
ORDER BY jaar ASC, week_nummer ASC");
?>
$query = mysql_query("SELECT
SUM(aantal) AS totaal,
WEEKOFYEAR(datum_tijd) AS week_nummer,
YEAR(datum_tijd) AS jaar
FROM vobis_af_bij
WHERE artikel_code = '$artikel'
GROUP BY YEAR(datum_tijd),WEEK(datum_tijd)
ORDER BY jaar ASC, week_nummer ASC");
?>
Gewijzigd op 10/05/2013 09:00:12 door Tobias Tobias
Heb je in de db een tabel met meer dan 53 rijen en waarvan je zeker bent dat de in PK de nummers 1 t/m 53 voorkomen, zou je eerst in een subquery die nummers kunnen selecteren en dan met een left join de vobis_af_bij tabel er aan koppelen.
Ik heb wel manieren om eromheen te werken, maar ik ben nieuwsgierig of het ook in 1keer in 1 query kan
Tobias,
Ja, dat kan in één query. Ik heb in mijn db een aantal tabellen waarvan ik zeker weet dat er nooit rijen uit gedelete zullen worden, anders gezegd komen daar de nummers 1 t/m 53 in voor.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT w.weeknr, YEAR(v.datum_tijd) jaar,
COALESCE(SUM(v.aantal), 0) aantal
FROM
(SELECT some_id as weeknr FROM some_tabel WHERE some_id < 54) w
LEFT JOIN
vobis_bij_af v
ON w.weeknr = WEEKOFYEAR(v.datum_tijd)
WHERE artikel_code = 123456
GROUP BY jaar, weeknr
ORDER BY jaar, weeknr
COALESCE(SUM(v.aantal), 0) aantal
FROM
(SELECT some_id as weeknr FROM some_tabel WHERE some_id < 54) w
LEFT JOIN
vobis_bij_af v
ON w.weeknr = WEEKOFYEAR(v.datum_tijd)
WHERE artikel_code = 123456
GROUP BY jaar, weeknr
ORDER BY jaar, weeknr
En wellicht is het niet onverstandig het weeknr als kolom op te nemen in de vobis_bij_af tabel
Ik zal het maandag op het werk gaan testen