2

このエラーは、選択クエリの実行中に発生します。アドバイスしてください。

Error No : 1111
Error : Invalid use of group function

クエリ:

SELECT cm.contactid, cm.firstname, cm.surname, cm.mobile, COUNT( * ) total
FROM sales_master as sm, contact_master as cm
WHERE sm.contactid = cm.contactid 
AND cm.mobile != '' AND orderdate>='2012-12-18' AND orderdate<='2013-03-18' 
GROUP BY sm.contactid 
HAVING COUNT(*) >= 1 
ORDER BY COUNT(*) DESC, cm.firstname ASC
4

2 に答える 2

1

このようにクエリを変更します。Cartisianの代わりにjoinを使用してください。cm.orderdateのタイプがDAteの場合、以下のクエリからDATE()を削除します。また、Count(*)の代わりにGROUPBYとORDERBYでエイリアスtotalを使用します。

SELECT
  cm.contactid,
  cm.firstname,
  cm.surname,
  cm.mobile,
  COUNT(cm.contactid)    total
FROM sales_master as sm
  LEFT JOIN contact_master as cm
    ON sm.contactid = cm.contactid
WHERE 
    AND cm.mobile != ''
    AND DATE(cm.orderdate) >= '2012-12-18'
    AND DATE(cm.orderdate) <= '2013-03-18'
GROUP BY cm.contactid
HAVING total >= 1
ORDER BY total DESC, cm.firstname ASC
于 2013-03-18T06:49:46.270 に答える
0

次の 2 つの理由があります。

1) バージョン互換性の問題

2) クエリの構文が正しくありません。2 番目のオプションの解決策をお送りします。バージョンの互換性の問題については、コメントで誰かが言及したリンクにアクセスする必要があります。そのためには、サブクエリの概念を使用する必要があります。

クエリを次のように変更します。

SELECT  sm.contactid ,cm.contactid as contactid , cm.firstname as firstname, cm.surname as surname , cm.mobile as mobile , COUNT( * ) total
FROM    (
            SELECT  sm.contactid,contactid , firstname,surname ,mobile ,total
            FROM    sales_master as sm, contact_master as cm
            WHERE sm.contactid = cm.contactid 
            AND cm.mobile != '' AND orderdate>='2012-12-18' AND orderdate<='2013-03-18' 
            GROUP BY sm.contactid 
         ) q
GROUP BY sm.contactid HAVING COUNT(*) >= 1 
ORDER BY COUNT(*) DESC, cm.firstname ASC

正確なクエリを作成したかどうかはわかりませんが、コンセプトは「サブクエリ」を意味するようなものです...

于 2013-03-18T06:08:23.163 に答える