Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Select in Select-每个派生表都必须有自己的别名错误_Mysql_Select_Correlated Subquery - Fatal编程技术网

Mysql Select in Select-每个派生表都必须有自己的别名错误

Mysql Select in Select-每个派生表都必须有自己的别名错误,mysql,select,correlated-subquery,Mysql,Select,Correlated Subquery,我正试图从数据库中获取有关按日期分组的订单的信息。 我有表sales\u flat\u order,其中有它的id、订单创建日期、订单支付总额和订单项目计数。我有桌上销售、平面、订单和价格 我创建了按天获取订单信息的脚本: SELECT DATE( sales_flat_order.created_at ) AS date, SUM( sales_flat_order.total_paid ) AS sales, SUM( sales_flat_order.total_

我正试图从数据库中获取有关按日期分组的订单的信息。 我有表sales\u flat\u order,其中有它的id、订单创建日期、订单支付总额和订单项目计数。我有桌上销售、平面、订单和价格

我创建了按天获取订单信息的脚本:

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
我得到:

DATE       SALES ITEMS
2013-03-05 72    3
2013-03-06 100   5
我有一个脚本来计算中间价:

    SELECT 
    avg(t1.price) as median_val 
FROM 
    (
        SELECT 
            @rownum:=@rownum+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;
组合脚本:

    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:=@rownum+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
获取错误:1248-每个派生表都必须有自己的别名

以下是数据库:

有人能帮忙吗?

解决方案:

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,
    MAX( median.median_val ) as median_item_price
FROM 
    sales_flat_order, 
    sales_flat_order_payment,
    (
 SELECT DATE(sq.created_at) as median_date, avg(sq.price) as median_val FROM (
SELECT t1.row_number, t1.price, t1.created_at FROM(
SELECT IF(@prev!=d.created_at, @rownum:=1, @rownum:=@rownum+1) as `row_number`, d.price, @prev:=d.created_at AS created_at
FROM sales_flat_order_item d, (SELECT @rownum:=0, @prev:=NULL) r
ORDER BY d.price
) as t1 INNER JOIN  
(
  SELECT count(*) as total_rows, created_at 
  FROM sales_flat_order_item d
  GROUP BY created_at
) as t2
ON t1.created_at = t2.created_at
WHERE 1=1
AND t1.row_number>=t2.total_rows/2 and t1.row_number<=t2.total_rows/2+1
)sq
group by DATE(sq.created_at)
    ) as median
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 median.median_date = DATE( sales_flat_order.created_at )
GROUP BY DATE( sales_flat_order.created_at )
WITH ROLLUP

? 当我在你的小提琴上弹奏“查询”时,我在“字段列表”中得到“未知列”销售\单位\订单\项目。价格“!?!是的,整个查询是incorrect@Strawberry,在sqlfeedle中,我得到了相同的错误。如果我从销售订单、销售订单、付款、销售订单和商品错误中写入。在phpmyadmin中不是这样的错误。
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,
    MAX( median.median_val ) as median_item_price
FROM 
    sales_flat_order, 
    sales_flat_order_payment,
    (
 SELECT DATE(sq.created_at) as median_date, avg(sq.price) as median_val FROM (
SELECT t1.row_number, t1.price, t1.created_at FROM(
SELECT IF(@prev!=d.created_at, @rownum:=1, @rownum:=@rownum+1) as `row_number`, d.price, @prev:=d.created_at AS created_at
FROM sales_flat_order_item d, (SELECT @rownum:=0, @prev:=NULL) r
ORDER BY d.price
) as t1 INNER JOIN  
(
  SELECT count(*) as total_rows, created_at 
  FROM sales_flat_order_item d
  GROUP BY created_at
) as t2
ON t1.created_at = t2.created_at
WHERE 1=1
AND t1.row_number>=t2.total_rows/2 and t1.row_number<=t2.total_rows/2+1
)sq
group by DATE(sq.created_at)
    ) as median
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 median.median_date = DATE( sales_flat_order.created_at )
GROUP BY DATE( sales_flat_order.created_at )
WITH ROLLUP