2015-11-29 2 views
0

У меня есть много категорий с тем же именем и родителем в моей базе данных Opencart (дубликаты). Нужно найти все из них. Это мой запрос:MySQL GROUP BY HAVING ничего не возвращает

SELECT * 
FROM 
    (SELECT `oc_category`.category_id, 
      `oc_category`.parent_id, 
      `oc_category_description`.name 
     FROM `oc_category`, `oc_category_description` 
     WHERE `oc_category`.category_id = `oc_category_description`.category_id 
    ) cats 
GROUP BY `cats`.parent_id, `cats`.name 
HAVING COUNT(*) > 1 

Но этот запрос ничего не возвращает. Скажите, пожалуйста, если я ошибаюсь.

+1

Не могли бы вы проверить, действительно ли внутренний запрос возвращает дублированные cats.parent_id, cats.name? – Roberto

+0

Да. он возвращает много дубликатов, которые отличаются только category_id – GrinderZ

+0

В вашем запросе нет ничего плохого, можете ли вы предоставить show create table info и некоторый набор данных? –

ответ

1

Нет проблем с запросом, она работает, проверьте это:

http://sqlfiddle.com/#!9/3d170/4

Пожалуйста поиграться с этим и заполнить его данными, которые не производит никаких записей, и добавить его к вашему вопросу.

+0

http://sqlfiddle.com/#!9/757a47/1 он работает. Но не в PhpMyAdmin. Теперь я заметил: версия сервера MySQL - 5.1.73 – GrinderZ

+0

Я бы утроил данные, возвращаемые внутренним запросом на моем сервере, может быть отладчиком'echo 'или'print', иначе это будет самая большая ошибка на очень зрелый продукт ... – Roberto

+0

Uhhh. Большое спасибо Роберто и Ино Ши! Я нашел проблему: имена не совпадают. Эти названия категории выглядят одинаково, но: SELECT, MD5 (имя) FROM 'oc_category_description' WHERE CATEGORY_ID = 1682 ИЛИ CATEGORY_ID = 1686 возвращает два различных хэшей: ff75716d820ec260fabc3cc09f97ca60 dd03260beb77782496d106be5c0d9baf Спасибо всем! – GrinderZ

 Смежные вопросы

  • Нет связанных вопросов^_^