2012-05-05 12 views
2

mysqlクエリを作成してエラーが発生しました。MYSQLのIF条件でエイリアスが動作しない

「未知の欄には、 『ダット』 『フィールドリスト』に」

このエラーは、MySQLでのIF条件で別名を使用するため、発生しました。

はここでmysqlのクエリです:任意の助けがにappriciatedされるだろう

SELECT 
    nCustomerID, 
    dDateRegistered, 
    (select count(nPlayerID) from credit_logs 
     where nPlayerID=nCustomerID) as total_clog, 
    (select count(nPlayerID) FROM bl_transaction_history 
     where nPlayerID=nCustomerID) as total_tran, 
    (select count(nCustomerID) from customer_freeplays 
     where nCustomerID=nCustomerID) as total_free, 
    (select dDateAdded from bl_transaction_history 
     where nPlayerID=nCustomerID) as dat, 
    (select DATEDIFF(now(),dat)/30) as date_differece1, 
    (select DATEDIFF(now(),dDateRegistered)/30) as date_difference2, 
    IF (dat IS NOT NULL,(select DATEDIFF(now(),dat)/30), 
     (select DATEDIFF(now(),dDateRegistered)/30)) as date_difference 
FROM bl_customers 
WHERE nAccountStatus=1 
    and bDeleted=0 
having total_clog>0 
    or total_tran>0 
    or total_free>0 

.. :)事前に

感謝。

+0

「where nCustomerID = nCustomerID」におそらく修正が必要です。 –

答えて

5

他の列の選択内でエイリアス列を使用することはできません。エイリアスを繰り返しているクエリの部分全体を何度もコピーする必要があります。すなわち、最初の宣言の後にすべてのdatを置き換えます(bl_transaction_historyからのdDateAddedをnPlayerID = nCustomerIDに置き換えます)。

+0

@Sanjay:別の列の計算や 'WHERE'節で列別名を使用することはできません。私の答えはこちらを参照してください:[where句で 'case expression column'を使う](http://stackoverflow.com/questions/6545664/using-case-expression-column-in-where-clause/6545685#6545685)別の回避策。 –

関連する問題