продуктов в магазине
tags(id, name) - таблица категории товаров к которым может относится тот или иной продукт
Как можно написать запрос, который найдёт продукты с более чем 10-ю тегами?
У меня вот так получилось
select *
from products p
where (
select count(*)
from product_tag
where p.id = id
) > 10
Но соответственно в связи надо еще промежуточную табличку product_tag или подобная
Где идёт products.id и tags.id
можно ли как-то иначе написать запрос без дополнительной таблицы?
В приведённой базе вообще не записано, к какой категории относится продукт. Так что вопрос не в запросе -- а в описании базой предметной области. Советую прочитать учебник по реляцыонным базам данных и прорешать из него примеры, перед проектированием баз. Там много нюансов и понятий, которые лучшэ знать.
та факт в том что это не я придумал а мне)0)
Тогда посоветуйте тому, кто это придумывает.
select pr.name,count(*) as cnt from products pr join tags on (pr.id=tags.id) group by pr.name having cnt > 10;
думаю вы неправильно интерпретировали tags.name. имхо, это как раз имя категории, а id - к продукту относится
В любом случае вам нужно связать продукты и категории Это стандартное отношение многих ко многим, которое стандартно решается добавлением третьей таблицы
Обсуждают сегодня