Generalnie mam problem z tym selektem zagnieżdżonym, który logicznie nie ma sensu. Dlaczego nie JOIN ?
np.
SELECT c.customer_id, c.email
FROM customer c
WHERE EXISTS (
SELECT 1
FROM order o
JOIN details_order do ON o.order_id = do.order_id
WHERE c.customer_id = o.customer_id
AND do.autor = '82'
AND o.data >= '2022-01-01'
AND o.data < '2023-01-01'
);
Twoje dwa selekty zagnieżdzone zawieraja warunki, które nie są związane z żadną z tabel, a zamiast tego porównują wartości kolumn order_id, autor, customer_id i data z wartościami w tabeli customer.
Pierwszy SELECT (zewnętrzny) próbuje znaleźć klientów, którzy mieli przynajmniej jedno zamówienie z książką Sienkiewicza, ale w rzeczywistości nie odwołuje się do tabeli details_order, co powoduje błąd w składni.
Drugi SELECT (zagnieżdżony) próbuje znaleźć klientów, którzy mieli przynajmniej jedno zamówienie w 2022 roku, ale ponownie odwołuje się do tabeli order zamiast do tabeli details_order.
A generalnie masz dwa selekty, które odwołują się do tej samej tabeli...
co się stało z tabelą 3. details_order (informacje o autorach. Sienkiewicz ma numer 82)? Do której się nie odwołujesz praktycznie