subselect ではなくINNER JOIN
、サブクエリに対して an を使用します。これにより、NULL が削除されます。
SELECT contacts.first_name,
contacts.last_name,
quote_id AS first_quote
FROM
contacts
INNER JOIN (
SELECT quotes.id, quotes_contacts.contact_id
FROM
quotes
LEFT JOIN quotes_contacts ON quotes.id = quotes_contacts.quote_id
JOIN (
SELECT quotes_contacts.contact_id, MIN(quotes.date_entered) AS date_entered
FROM
quotes
JOIN quotes_contacts ON quotes.id = quotes_contacts.quote_id
GROUP BY contact_id
) minquote ON quotes.date_entered = minquote.date_entered AND qc.contact_id = minquote.contact_id
) firstquote ON contacts.id = firstquote.contact_id
これは、が増加し、最も低いperが最も早いであることが確実な場合に、より簡単になります。その場合、あなたはただ行うことができますquote.id
quote.id
contact_id
date_entered
MIN(quote.id)
SELECT contacts.first_name,
contacts.last_name,
quote_id AS first_quote
FROM
contacts
INNER JOIN (
SELECT MIN(quotes.id) AS quote_id, quotes_contacts.contact_id
FROM quotes
LEFT JOIN quotes_contacts ON quotes.id = quotes_contacts.quote_id
GROUP BY contact_id
)minq ON contacts.id = minq.contact_id