with
colors as (
select
o.customerid,
o.orderid,
o.shipped,
datetime(o.shipped, '-1 hour') as shipped_min,
datetime(o.shipped, '1 hour') as shipped_max,
i.sku,
p.desc,
substring(p.desc, 0, instr(p.desc, ' (')) as desc_partial
from orders o
join orders_items i on i.orderid = o.orderid
join products p on p.sku = i.sku
where o.customerid = 8342
and p.desc like '%(%)%'
)
select
o1.customerid,
o1.shipped,
o1.desc,
o2.customerid as customerid_other,
c.name, c.phone,
o2.shipped as shipped_other,
p.desc as desc_other
from colors o1
join orders o2 on o2.shipped between o1.shipped_min and o1.shipped_max and o2.orderid != o1.orderid
join orders_items i on i.orderid = o2.orderid
join products p on p.sku = i.sku and substring(p.desc, 0, instr(p.desc, ' (')) = o1.desc_partial
join customers c on c.customerid = o2.customerid