Eu tenho o esquema abaixo, os campos owner_id,billing_id,tech_id,admin_id
na carts
tabela estão apontando para a contacts
tabela. Como você pode ver no resultado da consulta, tenho que fazer isso JOIN
para cada campo. Existe uma maneira de evitar?
SELECT c.domain, c.period, co.name AS owner, co1.name AS admin, co2.name AS tech, co3.name AS billing, h.nameserver
FROM carts c
LEFT JOIN contacts co ON c.owner_id = co.id
LEFT JOIN contacts co1 ON c.admin_id = co1.id
LEFT JOIN contacts co2 ON c.tech_id = co2.id
LEFT JOIN contacts co3 ON c.billing_id = co3.id
LEFT JOIN HOSTS h ON c.host_id = h.id
WHERE c.user_id =1
Você pode obter os mesmos resultados com apenas uma junção e giro.
No entanto, verifique o plano de execução para ambas as versões, às vezes, várias junções podem ser mais rápidas do que essa abordagem.