Скажите, пожалуйста, а есть ли метод типа andWhereHas для связанных данных?
SELECT name, `text`
FROM product
JOIN product_attribute USING (product_id)
JOIN attribute_description USING (attribute_id)
-- JOIN attribute USING (attribute_id)
WHERE product.grup_id = '17594'
GROUP BY 1, 2
HAVING COUNT(*) > 1;
вроде работает правильно, но притормаживает
SELECT a.attribute_id, ad.name, pa.text
FROM product_attribute pa
LEFT JOIN products AS `P` ON `pa`.`product_id` = `P`.`id`
LEFT JOIN attribute a ON (pa.attribute_id = a.attribute_id)
LEFT JOIN attribute_description ad ON (a.attribute_id = ad.attribute_id)
WHERE P.grup_id = 777
AND a.attribute_group_id = '" . (int)$product_attribute_group . "'
AND ad.language_id = '" . (int)$config_language_id . "'
AND pa.language_id = '" . (int)$config_language_id . "'
GROUP BY `pa`.`attribute_id`, `pa`.`text`
HAVING COUNT(*) > 1
ORDER BY a.sort_order
А конкретно по вопросу:
Я бы лучше сразу хранил кол-во...потому что при выводе списка заказа, например нужно будет отобразить кол-во одинаковых...и начнётся пляска с GROUP BY и т.п. ...хотя с полем "кол-во" тоже в придётся поплясать...
Вообщем как удобнее, так и делай на данном этапе...