2012-05-22 94 views
3

下午好,不知道是否有人可以點我在正確的方向,因爲我努力了一點。我有一個MySQL查詢,我需要包括在計算領域的一個別名,例如:重用別名計算領域

Select tblComms._CommMonth, 
     tblComms._Reference, 
     tblComms._ClientName, 
     tblComms._Premium, 
     tblComms._CommDue, 
     tblComms._Employee_Name, 
     tblCont.Retention, 
     (tblComms._CommDue) * (tblCont.Retention)/100 As Paid, 
     (tblComms._CommDue) - (Paid) As Payable 
From tblComms Inner Join dbo_companyref On 
     dbo_companyref._Reference = tblComms._Reference 
     Inner Join tblCont 
     On dbo_companyref._Advisor_Name = tblCont._Employee_Name 

這將返回一個錯誤「未知列‘付費’的字段列表」,有什麼辦法,我可以使用付費它被創建後的別名?我試圖TP推出其在Access & SQL創建了一個新的系統,他們只需使用已保存的查詢/ SP可獲得的..

+0

燦你幫我查詢? – JHS

+0

的MS-訪問別名功能是非標準將無法正常工作/編譯任何其他DBMS平臺。您可以創建使用定義的函數來完成相同的事情。 –

+1

不能在MySQL的SELECT語句中使用別名,你必須重新計算 – Nico

回答

3

它不允許的。你不能使用列的別名時,別名和另一列是在SELECT同一水平。

您也可以使用別名,如果是這樣的 -

SELECT alias 
FROM (SELECT column1 AS alias 
     FROM table); 
+0

您的輸入好,謝謝,我設法通過使用MySQL視圖進行排序此,作品一種享受... – gary

3

可以使用變量在MySQL這個東西:

Select tblComms._CommMonth, 
    tblComms._Reference, 
    tblComms._ClientName, 
    tblComms._Premium, 
    tblComms._CommDue, 
    tblComms._Employee_Name, 
    tblCont.Retention, 
    @Paid := (tblComms._CommDue) * (tblCont.Retention)/100 As Paid, 
    (tblComms._CommDue) - (@Paid) As Payable From tblComms Inner Join dbo_companyref On 
    dbo_companyref._Reference = tblComms._Reference 
    Inner Join tblCont 
    On dbo_companyref._Advisor_Name = tblCont._Employee_Name 
+0

這應該是公認的答案。 – Ultimater

-1

使用(select Paid)

Select tblComms._CommMonth, 
    tblComms._Reference, 
    tblComms._ClientName, 
    tblComms._Premium, 
    tblComms._CommDue, 
    tblComms._Employee_Name, 
    tblCont.Retention, 
    (tblComms._CommDue) * (tblCont.Retention)/100 As Paid, 
    (tblComms._CommDue) - (select Paid) As Payable 
    From tblComms Inner Join dbo_companyref On 
    dbo_companyref._Reference = tblComms._Reference 
    Inner Join tblCont 
    On dbo_companyref._Advisor_Name = tblCont._Employee_Name