У меня есть вопрос, как присоединить счетчик (*) из другой таблицы к базовой таблице.
Вопрос следующий:
Таблица: Клиент
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| customer_id | int |
| product_key | int |
+-------------+---------+
product_key - внешний ключ для таблицы Product.
Table: Product
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| product_key | int |
+-------------+---------+
product_key - столбец первичного ключа для этой таблицы.
Напишите SQL запрос отчета, который предоставляет идентификаторы клиентов из таблицы «Клиенты», которые купили все продукты в таблице «Продукт».
Например:
Таблица клиентов:
+-------------+-------------+
| customer_id | product_key |
+-------------+-------------+
| 1 | 5 |
| 2 | 6 |
| 3 | 5 |
| 3 | 6 |
| 1 | 6 |
+-------------+-------------+
Таблица продуктов:
+-------------+
| product_key |
+-------------+
| 5 |
| 6 |
+-------------+
Таблица результатов:
+-------------+
| customer_id |
+-------------+
| 1 |
| 3 |
+-------------+
Покупатели, купившие все продукты (5 и 6), являются покупателями с идентификаторами 1 и 3.
И мой подход:
select distinct
c.customer_id
from customer as c join (
select
count(distinct product_key) as total
from product
) as t
group by c.customer_id
having count(distinct c.product_key) = t.total
Но я получаю сообщение об ошибке:
Unknown column 't.total' in 'having clause'
Не могли бы вы выяснить, где я сделал не так? Спасибо за вашу помощь в продвижении.