Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

ऑन क्लॉज में MySQL अज्ञात कॉलम

ANSI-89 स्टाइल और ANSI-92 स्टाइल जॉइन को मिक्स न करें। उनकी अलग प्राथमिकता है जो भ्रमित करने वाली त्रुटियों को जन्म दे सकती है, और यहाँ वही हुआ है। आपकी क्वेरी की व्याख्या इस प्रकार की जा रही है:

FROM property p, (
    propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    ...
)

उपरोक्त में, कॉमा-स्टाइल जॉइन पर विचार करने से पहले जॉइन कीवर्ड का उपयोग करने वाले जॉइन का मूल्यांकन पहले किया जाता है। उस समय तालिका p अभी तक घोषित नहीं किया गया है।

MySQL से मैनुअल :

<ब्लॉकक्वॉट>

हालाँकि, अल्पविराम ऑपरेटर की प्राथमिकता INNER JOIN, CROSS JOIN, LEFT JOIN, इत्यादि से कम है। यदि आप शामिल होने की स्थिति होने पर कॉमा जॉइन को अन्य जॉइन प्रकारों के साथ मिलाते हैं, तो 'ऑन क्लॉज' में अज्ञात कॉलम 'col_name' फ़ॉर्म की त्रुटि तब हो सकती है। इस समस्या से निपटने के बारे में जानकारी इस खंड में बाद में दी गई है।

मेरा सुझाव है हमेशा ANSI-92 स्टाइल जॉइन का उपयोग करना, यानी JOIN कीवर्ड का उपयोग करना:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',
    astext(pg.Geometry) AS Geometry
FROM property p
    JOIN propertygeometry pg ON p.PropertyGeometryID = pg.id
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
GROUP BY p.id

संबंधित:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइब्रिड क्लाउड डेटाबेस ट्रैफ़िक को कैसे एन्क्रिप्ट करें

  2. SQL इंजेक्शन जो mysql_real_escape_string () के आसपास हो जाता है

  3. MySQL में प्रकार:BigInt(20) बनाम Int(20)

  4. कैसे पता लगाया जाए कि किसी मान में MySQL में कम से कम एक संख्यात्मक अंक है?

  5. MySQL में डेटाटाइम से घंटे कैसे घटाएं?