doudou6050 2018-01-10 08:49
浏览 13
已采纳

错误GroupBy PHP + MSSQL

$Read->FullRead("SELECT an_promo_page_tipo_blocos.title,"
            . "an_promo_page_tipo_blocos.img,"
            . "an_promo_bloco_anexo.status,"
            . "an_promo_bloco_anexo.pg_id,"
            . "an_promo_bloco_anexo.id,"
            . "an_promo_bloco_anexo.promo_id,"
            . "an_promo_bloco_anexo.tipo_bloco,"
            . "an_promo_bloco_anexo.bloco_id "
            . "FROM an_promo_bloco_anexo "
            . "INNER JOIN an_promo_page "
            . "ON "
            . "an_promo_bloco_anexo.pg_id = an_promo_page.pg_id"
            . " INNER JOIN an_promo_page_tipo_blocos ON an_promo_bloco_anexo.tipo_bloco = an_promo_page_tipo_blocos.id "
            . "WHERE an_promo_bloco_anexo.promo_id = :pro AND an_promo_bloco_anexo.pg_id = :pi"
            . " AND an_promo_bloco_anexo.pg_tipo = :pt ORDER BY an_promo_bloco_anexo.ordem, an_promo_page_tipo_blocos.title"
            . " AND GROUP BY "
            . "an_promo_page_tipo_blocos,"
            . "an_promo_bloco_anexo"
            . "", "pro={$PromoId}&pi={$p['pg_id']}&pt={$p['pg_tipo']}");

Result:

protected 'message' => string 'SQLSTATE[42000]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Column 'an_promobar.promo_title' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.' (length=217)

Anyone can help me?

  • 写回答

1条回答 默认 最新

  • douyan4900 2018-01-10 08:54
    关注

    When you use GROUP BY you need to group by all the fields that you are not using an aggregate function against (ie: SUM, MAX, etc).

    GROUP BY is also not part of a WHERE clause; it stands alone.

    Given your query has no aggregate functions, I don't see why you're using GROUP BY at all.

    Try this.

    $Read->FullRead("SELECT an_promo_page_tipo_blocos.title,"
            . "an_promo_page_tipo_blocos.img,"
            . "an_promo_bloco_anexo.status,"
            . "an_promo_bloco_anexo.pg_id,"
            . "an_promo_bloco_anexo.id,"
            . "an_promo_bloco_anexo.promo_id,"
            . "an_promo_bloco_anexo.tipo_bloco,"
            . "an_promo_bloco_anexo.bloco_id "
            . "FROM an_promo_bloco_anexo "
            . "INNER JOIN an_promo_page "
            . "ON "
            . "an_promo_bloco_anexo.pg_id = an_promo_page.pg_id"
            . " INNER JOIN an_promo_page_tipo_blocos ON an_promo_bloco_anexo.tipo_bloco = an_promo_page_tipo_blocos.id "
            . "WHERE an_promo_bloco_anexo.promo_id = :pro AND an_promo_bloco_anexo.pg_id = :pi"
            . " AND an_promo_bloco_anexo.pg_tipo = :pt ORDER BY an_promo_bloco_anexo.ordem, an_promo_page_tipo_blocos.title"    
            . "", "pro={$PromoId}&pi={$p['pg_id']}&pt={$p['pg_tipo']}");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程