J'essaie d'obtenir des informations de base de données sur les commandes groupées par date. J'ai une table sales_flat_order, où j'ai son identifiant, date de création de la commande, total_payé pour la commande, et le nombre d'articles de la commande. Et j'ai table sales_flat_order_item où sont les articles de commandes avec ses prix.Sélectionner dans select - Chaque table dérivée doit avoir sa propre erreur d'alias
J'ai créé script pour obtenir des informations d'ordre par jour:
SELECT
DATE(sales_flat_order.created_at) AS date,
SUM(sales_flat_order.total_paid) AS sales,
SUM(sales_flat_order.total_item_count) AS items
FROM
sales_flat_order,
sales_flat_order_payment
WHERE
sales_flat_order.status = 'complete'
AND sales_flat_order.entity_id = sales_flat_order_payment.parent_id
AND sales_flat_order_payment.method = 'checkmo'
GROUP BY DATE(sales_flat_order.created_at)
WITH ROLLUP
-je obtenir:
DATE SALES ITEMS
2013-03-05 72 3
2013-03-06 100 5
Et je script pour compter le prix médian:
SELECT
avg(t1.price) as median_val
FROM
(
SELECT
@rownum:[email protected]+1 as `row_number`,
d.price
FROM
sales_flat_order_item d,
(SELECT @rownum:=0) r
WHERE 1
ORDER BY d.price
) as t1,
(
SELECT
count(*) as total_rows
FROM
sales_flat_order_item d
WHERE 1
) as t2
WHERE 1
AND t1.row_number>=total_rows/2
and t1.row_number<=total_rows/2+1;
Maintenant, je m essayant de combiner ce deux script pour obtenir:
DATE SALES ITEMS median_item_price
2013-03-05 72 3 19
2013-03-06 100 5 10.5
scénario combiné:
SELECT
DATE(sales_flat_order.created_at) AS date,
SUM(sales_flat_order.total_paid) AS sales,
SUM(sales_flat_order.total_item_count) AS items,
sales_flat_order_item.price as median_item_price
FROM
sales_flat_order,
sales_flat_order_payment,
(
SELECT
avg(t1.price) as median_val
FROM
(
SELECT
@rownum:[email protected]+1 as `row_number`,
d.price
FROM
sales_flat_order_item d,
(SELECT @rownum:=0) r
WHERE 1
ORDER BY d.price
) as t1,
(
SELECT
count(*) as total_rows
FROM
sales_flat_order_item d
WHERE 1
) as t2
WHERE 1
AND t1.row_number>=total_rows/2
and t1.row_number<=total_rows/2+1
) as sales_flat_order_item
WHERE
sales_flat_order.status = 'complete'
AND sales_flat_order.entity_id = sales_flat_order_payment.parent_id
AND sales_flat_order_payment.method = 'checkmo'
AND DATE(sales_flat_order_item.created_at) = DATE(sales_flat_order.created_at)
GROUP BY DATE(sales_flat_order.created_at)
WITH ROLLUP
et obtenir l'erreur: # 1248 - Chaque table dérivée doit avoir son propre alias
est la base de données ici: http://sqlfiddle.com/#!2/7dfec
Quelqu'un peut-il aider?
? Quand je joue sur votre violon, je reçois la colonne 'Unknown' sales_flat_order_item.price 'dans' la liste des champs '...'!?! – Strawberry
Yup, toute la requête est incorrecte – Sergio
@ Strawberry, dans sqlfeedle je reçois la même erreur. Si j'écris FROM sales_flat_order, sales_flat_order_payment, sales_flat_order_item erreur disparaissent. Dans phpmyadmin n'était pas une telle erreur. – Alex