Учитывая вашу модель данных и требования, вам следует попробовать следующие SQL-запросы. Вы можете легко выполнить UNION
с обоими SQL-запросами.
Первый SQL возвращает этот список -> Все клиенты, у которых нет счета
select 'customer' as category, c.id as id, customer_name as name
from customer c
left join invoice i on c.id = i.customer_id
where i.id is null
Второй SQL возвращает этот список -> Все непроданные товары
select 'product' as category, p.id as id, product_name as name
from product p
left join invoice_item ii on p.id = ii.product_id
where ii.id is null;