2017-03-27 42 views
0

我試圖使用查詢作爲另一個查詢的數據源,但我不斷從SELECT分析錯誤。我對SQL和phpmyadmin相當陌生,不確定爲什麼會發生此錯誤。繼承人我查詢我試圖做的事:試圖把查詢內另一個查詢在phpMyAdmin

SELECT CUS_CODE, 
COUNT(LINE.INV_NUMBER) AS "Number of Invoices", 
AVG("Invoice Total") AS "Average Invoice Amount", 
MAX("Invoice Total") AS "Max Invoice Amount", 
MIN("Invoice Total") AS "Min Invoice Amount", 
Sum("Invoice Total") AS "Total Customer Purchases" 
FROM (SELECT CUS_CODE, LINE.INV_NUMBER AS INV_NUMBER, 
     Sum(LINE.LINE_UNITS*LINE.LINE_PRICE) AS "Invoice Total" 
     FROM INVOICE, LINE 
     WHERE INVOICE.INV_NUMBER = LINE.INV_NUMBER 
     GROUP BY CUS_CODE, LINE.INV_NUMBER) 
GROUP BY CUS_CODE; 

很抱歉,如果我的問題是不明確的,但我可以回答任何問題,以幫助它清除掉。

+0

外部查詢僅需要由子查詢創建的派生表露出的字段的訪問。它無法訪問數據庫的實際表,例如「LINE」。 –

+0

除此之外,您*必須*給派生表提供別名。 –

+0

@GiorgosBetsos我以前如何給表格添加一個別名?我試圖找到它,但我無法找到如何給它一個別名。 – Shuckyducky

回答

0

您的疑問:

SELECT CUS_CODE, 
    COUNT(LINE.INV_NUMBER) AS "Number of Invoices", 
    AVG("Invoice Total") AS "Average Invoice Amount", 
    MAX("Invoice Total") AS "Max Invoice Amount", 
    MIN("Invoice Total") AS "Min Invoice Amount", 
    Sum("Invoice Total") AS "Total Customer Purchases" 
FROM (
    SELECT CUS_CODE, 
     LINE.INV_NUMBER, 
     Sum(LINE.LINE_UNITS * LINE.LINE_PRICE) AS "Invoice Total" 
    FROM INVOICE, 
     LINE 
    WHERE INVOICE.INV_NUMBER = LINE.INV_NUMBER 
    GROUP BY CUS_CODE, INV_NUMBER 
    ) 
GROUP BY CUS_CODE; 

一對夫婦的問題在這裏:

  1. 在你的外部查詢您引用LINE.INV_NUMBERLINE表不可用在這方面。這是你想要的子查詢的INV_NUMBER
  2. 您的子查詢缺少別名,因此您無法在外部查詢中引用它。這隻會拋出沒有別名的錯誤。

固定:

SELECT t1.CUS_CODE, 
    COUNT(t1.INV_NUMBER) AS "Number of Invoices", 
    AVG(t1."Invoice Total") AS "Average Invoice Amount", 
    MAX(t1."Invoice Total") AS "Max Invoice Amount", 
    MIN(t1."Invoice Total") AS "Min Invoice Amount", 
    Sum(t1."Invoice Total") AS "Total Customer Purchases" 
FROM (
    SELECT CUS_CODE, 
     LINE.INV_NUMBER AS INV_NUMBER, 
     Sum(LINE.LINE_UNITS * LINE.LINE_PRICE) AS "Invoice Total" 
    FROM INVOICE, 
     LINE 
    WHERE INVOICE.INV_NUMBER = LINE.INV_NUMBER 
    GROUP BY CUS_CODE, 
     LINE.INV_NUMBER 
    ) as t1 
GROUP BY CUS_CODE; 
+0

它似乎仍然不起作用。我仍然收到一個錯誤的SELECT,但我也得到了一個錯誤的t1別名。 – Shuckyducky

+0

你能分享這個錯誤嗎?我相信這裏的語法是正確的,所以它是一些特定於您的數據的問題,並且確切的錯誤消息將有助於排除故障。 – JNevill

+0

「以前解析過的」警告消息來自phpmyadmin並且[是已知的錯誤](http://stackoverflow.com/questions/36484077/mysql-parsing-error-in-phpmyadmin-this-type-of-clause-was -previously-parsed)另一個錯誤可能是來自mysql的錯誤,它更貼切。 – JNevill