Файл примера: Groups/anti/groupbyproduct.sql
SELECT product_id, MAX(date_reported) AS latest, bug_id FROM Bugs JOIN BugsProducts USING (bug_id) GROUP BY product_id;
В данном примере будет получено много отличных значений столбца bug_ id от данного столбца product_id, поскольку таблица BugsProducts включает множество ошибок для данного продукта. В запросе группировки, сокращающем строки до единственной строки на один продукт, исчезает возможность представить все значения столбца bug_id.
Поскольку больше нельзя гарантировать, что каждому особому столбцу будет присвоено единственное значение, СУБД это расценивает как нарушение Правила единственного значения. В базах данных большинства производителей появляется сообщение об ошибке, если вы вводите какой-либо запрос, пытающийся вернуть столбец, не принадлежащий числу столбцов, названных в предложении GROUP BY, ИЛИ являющихся аргументами агрегатной функции.
СУБД MySQL и SQLite имеют поведение, отличающееся от СУБД других производителей. Оно будет изучено в разделе 15.4 «Допустимые способы использования антипаттерна».
Опубликовал vovan666
August 16 2013 07:31:14 ·
0 Комментариев ·
3293 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.