Использование объединений - это самый простой способ создания связанной информации. У меня есть GROUP BY
product.id, что означает, что eans
- это агрегированное поле, потому что это единственные поля, которые могут дублироваться. Я добавил HAVING
часть после запроса, чтобы выбрать только те результаты с 2 или более (это необязательно).
SELECT p.id, name, price, count(ean) as eans
FROM products p
JOIN products_ean e
ON p.id = e.product_id
GROUP BY p.id
HAVING eans >= 2
В отношении эффективности запросов использование product_id, ean в качестве составного первичного ключа для таблицы products_ean
, вероятно, наиболее эффективно. Поскольку это уникально, не очевидно, зачем нужен столбец products_ean.id
.