我目前在一些遗留系统上工作,我遇到了一段这样写的 sql:
SELECT
cel.id,
cel.campaign_id,
cel.campaign_name,
cel.campaign_message_type,
cel.responsible_user_id,
cel.responsible_user_full_name,
cel.person_id,
cel.email_template_id,
cel.email_message_subject,
cel.recipient_list_name,
cel.first_name,
cel.last_name,
cel.email_address,
b.message_content_html email_message_content_html,
b.message_content_text email_message_content_text,
b.course_presentation_id,
cp.phone_mobile
FROM
campaigns_email_logs cel
LEFT JOIN contacts_people cp ON
(cel.person_id = c.id),
campaigns_email b
WHERE
cel.campaign_id = b.id and
cel.status = 'queued' and
cel.datetime_start < now() and
cel.datetime_end > now() and
b.paused = 'no'
order by
{$campaignMessagesToSendOrdering};
请您解释一下 LEFT JOINcampaign_email 在做什么?是否在contacts_people 上进行交叉连接?为了让我快速理解这一点,任何人都可以在没有 ,campaigns_email 的情况下重写它。
我知道您的 from 子句中可以有多个表,但我从未见过这样的情况。
谢谢。