SELECT cl.nome
FROM ((((Cliente cl
INNER JOIN Compra c ON cl.n_cliente = c.n_cliente)
INNER JOIN Artigo a ON c.n_serie = a.n_serie)
INNER JOIN Modelo m ON a.cod_modelo = m.cod_modelo
AND a.cod_marca = m.cod_marca)
INNER JOIN Modelo_Categoria modc ON modc.cod_modelo = m.cod_modelo)
INNER JOIN Categoria cat ON cat.cod = modc.cod
WHERE cat.descricao = 'RAM'
AND EXISTS
(
SELECT cl1.nome
FROM ((((Cliente cl1
INNER JOIN Compra c1 ON cl1.n_cliente = c1.n_cliente)
INNER JOIN Artigo a1 ON c1.n_serie = a1.n_serie)
INNER JOIN Modelo m1 ON a1.cod_modelo = m1.cod_modelo
AND a1.cod_marca = m1.cod_marca)
INNER JOIN Modelo_Categoria modc1 ON modc1.cod_modelo = m1.cod_modelo)
INNER JOIN Categoria cat1 ON cat1.cod = modc1.cod
WHERE cat1.descricao = 'Computador'
AND c1.data_compra < c.data_compra
GROUP BY cl.nome, data_compra, c.ncompra
)
GROUP BY cl.nome;