2016-12-16 21 views
0

ThisクエリにColdFusionに含まれていないため、選択リストで無効です。古いバージョンのColdFusionで実行できますが実行できません今すぐこのクエリ。ただ、それは句列XXXXX 'は、集計関数またはGROUP BY句

 <CFQUERY name="getUserList" datasource="#REQUEST.dsn#" maxrows="1"> 
     SELECT 
      TUser.userID as user_ID, 
      Min(TUser.agencyID) as agencyID, 
      Min(TUser.servicing_EntityID) as servicing_EntityID, 
      Min(Tuser.userid) AS userID, 
      Min(Tuser.lastname) AS lastName, 
      Min(Tuser.firstname) AS firstName, 
      Min(Tuser.isSecondary) AS isSecondary, 
      Min(Tuser.corporate_ID) AS corporate_ID, 
      Min(Tuser.city) AS city, 
      Min(TUser.address1) AS address1, 
      Min(Corporate_Client.client_name) AS client_name, 
      Min(TLocationProvState.abrev) AS abrev, 
      TUser_Loyalty.loyalty_ID AS loyalty_ID 
     FROM TUser 
     LEFT JOIN TLocationProvState ON (Tuser.provinceID = TLocationProvState.PROVSTATEID) 
     LEFT JOIN Corporate_Client ON (Tuser.corporate_ID = Corporate_Client.client_ID) 
     LEFT JOIN TUser_Loyalty ON (Tuser.userid = TUser_Loyalty.userID) 
     LEFT JOIN TLoyalty ON (TUser_Loyalty.loyalty_ID = TLoyalty.loyalty_ID) 
     WHERE (0=1) 
     GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
     ORDER BY TUser.LastName, TUser.FirstName, TUser.User_ID 
     </CFQUERY> 
+0

あなたのORDER BYを 'LastName、firstName、User_ID'に変更すると、Min(LastName)とMin(FirstName)がMinの結果と異なる選択になっていることに気づくでしょう。テーブルエイリアスはbyで使用できるので、カラムエイリアスを使用してください。 – xQbert

+0

試しました....それは動作しませんでしたが、それと同じエラーです。私はちょうどクエリを壊し続ける奇妙な行動を持っている場合は、現在のSQLはTUser.UserID、TUser_Loyalty.loyalty_ID、TUser.LastName、TUser.FirstName \t \t user_IDは、loyalty_ID、lastNameの、firstNameの –

+0

BY ORDER BY GROUPです...グループ内の順序でTUser.userID、Tuser_Loyalty.Loyalty_IDだけを使用します。それが実行されている場合は、order byが問題になり、まだ実行されていない場合は、ここでフォーカスします。それはその後、1分でグループを追加して戻って、それを実行しますか? – xQbert

答えて

0

BY集計関数またはGROUPのいずれかに含まれていないので、列「TUser.LastNameは、」あなたはに指定されていない分野でORDERしようとしている選択リストに無効であることを思い出させますグループフィールド。したがって、フィールドは順序付けのために戻されなければなりません。したがって、Query Executorはグループ化されたステートメントのすべてのフィールドを処理する方法を知る必要があります。

GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID, TUser.LastName, TUser.FirstName 
ORDER BY TUser.User_ID, TUser.LastName, TUser.FirstName 

OR

GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
ORDER BY TUser.User_ID, MIN(TUser.LastName), MIN(TUser.FirstName) 
+0

ありがとうございます、私は1つずつ試して結果をお知らせします。ありがとうございました~~~ –

+0

実際には、私はTUserテーブルを構成するものは何も集約する必要はないと思います。既にUserIDでグループ化しています。これらのフィールドは、UserID全体で統一されていますか? –

+0

両方とも試してみてください...同じエラーです...私は、順番にエイリアス名を使用しなければなりません。 –

0

無効である、あなたが持っていることで代わりに分名前のまた

WHERE (0=1) 
    GROUP BY TUser.UserID, TUser_Loyalty.loyalty_ID 
    ORDER BY LastName, FirstName, User_ID 

奇数... 順序での列の別名を使用することによってあなたの順序Tuser.user_IDが選択されていますが、TUser.userID(アンダースコアなし)が表示されます

e SQLはselectの後に生成されたorder byを持ちます。したがって、カラム別名が利用可能です。

+0

はい、私は昨日みました。それは "あいまいな列名の姓"またはユーザーIDのfirstname ... –

+0

aLastNameとaFirstNameのような別の別名を使用できますか? – xQbert

+0

ちょうどそれに取り組んで –

関連する問題