Je dois prendre la requête suivante et extraire le nombre total de commandes et la somme des commandes groupées par jour. Je stocke tout en utilisant des horodatages.
SELECT
COUNT(id) as order_count,
SUM(price + shipping_price) as order_sum,
DAY(FROM_UNIXTIME(created)) as day
FROM `order`
WHERE '.implode(' AND ', $where).'
J'ai besoin de grouper par JOUR, mais lorsque je fais pour les ventes du week-end dernier, il prend mon nombre de commandes et le rend égal à 1 au lieu de 3. Comment puis-je extraire les valeurs ci-dessus groupées par jour?
REMARQUE: l'implode est utilisé UNIQUEMENT pour définir la période (WHERE created> = TIMESTAMP AND <= TIMESTAMP)
Mettre à jour
Sans GROUP BY day
Array (
[order_count] => 3
[order_sum] => 69.70
[day] => 17
)
Avec GROUP BY day
Array (
[order_count] => 1
[order_sum] => 24.90
[day] => 17
)
J'ai besoin de cette requête pour retourner chaque jour de vente, le nombre de commandes et la somme de ces ventes. Il me manque un morceau du puzzle ici quelque part ...
Oubliez-vous simplement d'ajouter GROUP BY ...
à la fin?
SELECT
COUNT(id) as order_count,
SUM(price + shipping_price) as order_sum,
DAY(FROM_UNIXTIME(created)) as order_day
FROM `order`
WHERE '.implode(' AND ', $where).'
GROUP BY order_day
Vous ne pouvez pas utiliser as day
pour votre colonne de jours car day
est une fonction MySQL. Utilisez quelque chose comme order_day
.
Selon le commentaire de @OMG Unicorn, vous pouvez utiliser:
DAY(FROM_UNIXTIME(created)) as `day`
Tant que wrap day
dans `backticks.
Vous pouvez aussi simplement utiliser:
SELECT
COUNT( id ) AS order_count,
SUM( price + shipping_price ) AS order_sum
FROM `order`
GROUP BY LEFT( timestamp, 10 )
ou même
GROUP BY SUBSTR (horodatage, 1, 10)
Vous êtes probablement confronté à un conflit de noms entre DAY()
(la fonction dans MySQL) et day
(le nom de votre variable). Avez-vous essayé d'utiliser quelque chose qui ne sera pas en conflit, tel que order_day
?