Group by mssql

Опубликовано 2011.09.20 в разделе MySQL

В БД MSSQL оператор group by работает как то странно... У меня был запрос к MySql написанный для Drupal 7
  1. $query = db_select('cb_services_poll_child','p');
  2. $query ->leftJoin('cb_services_poll', 'pm', 'pm.id = '.$id_widget);
  3. $query ->fields('p', array('vote'));
  4. $query ->fields('pm', array('options'));
  5. $query ->addExpression('COUNT(*)','n');
  6. $query ->condition('p.srv_id', $id_widget);
  7. $query ->groupBy('p.vote');
  8. $result=$query->execute();
В мускуле всё срабатывало на ура,а MsSql выдавал is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY Оказывается группуровать в MsSql`е нужно сразу по всем полям, а не по одному.И поля(после group by) должны быть разделены пробелом и запятой. Незнаю откуда у Microsoft руки растут.. В итоге:
  1. ...
  2. вместо
  3. $query ->groupBy('p.vote');
  4.  
  5. ...
  6. написал
  7. $query ->groupBy('p.vote, pm.options');
Далее если вы используете функции пагинации:
  1. $query ->extend('PagerDefault');
То можете получить следующую ошибку PagerDefault->execute() (line 79 Решается она следующим образом. Сгруппированный GroupBy раскидываем на 2.Вот так:
  1. ...
  2. вместо
  3. $query ->groupBy('p.vote, pm.options');
  4.  
  5. ...
  6. пишем
  7. $query ->groupBy('p.vote');
  8. $query ->groupBy('pm.options');

2 Комментариев

Оставить комментарий

  1. Админ 2012/01/09

    Вот так подключали на mssql.седьмую версию. http://php-include.ru/stati/ustanovka-drupal-7-na-oblako-microsoft-azure

    Ответить

  2. Гость 2012/01/08

    привет!
    а ты не мог бы рассказать, как подружил D7 c MSSQL? и с какой версией, кстати? в гугле success-stories полно, но еще одна бы не помешала, мне кажется!
    спасибо.

    Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте логотип Visa