मैं एक ही मुद्दे पर संघर्ष कर रहा था और "mysql वाक्यविन्यास गैर-मानक है" मेरी राय में मान्य तर्क नहीं है। PostgreSQL आसान गैर-मानक एक्सटेंशन भी जोड़ता है, उदाहरण के लिए "INSERT ... RETURNING ..." डालने के बाद ऑटो आईडी प्राप्त करने के लिए। साथ ही, बड़े प्रश्नों को दोहराना एक अच्छा समाधान नहीं है।
हालाँकि, मुझे WITH स्टेटमेंट बहुत मददगार (CTE) लगा। यह क्वेरी के भीतर एक अस्थायी दृश्य बनाता है जिसे आप सामान्य तालिका की तरह उपयोग कर सकते हैं। मुझे यकीन नहीं है कि मैंने आपके जॉइन को सही तरीके से लिखा है, लेकिन सामान्य तौर पर इसे इस तरह काम करना चाहिए:
WITH jobs_refined AS (
SELECT
jobs.*,
(SELECT CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END) AS lead_state
FROM jobs
LEFT JOIN lead_informations
ON lead_informations.job_id = jobs.id
AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_refined
WHERE lead_state = 'NEW'