मुझे लगता है Puzzles
कोई कॉलम नहीं है PuzzleID
. क्या कॉलम को केवल ID
कहा जाता है? उस टेबल में? या Puzzle_ID
?
आपको SHOW CREATE TABLE Puzzles
चलाना चाहिए उस तालिका की वर्तमान परिभाषा देखने के लिए।
कभी-कभी एक लापता उद्धरण अपराधी हो सकता है:
... ON `Puzzles.PuzzleID` ...
ऊपर दिए गए कॉलम में "Puzzles.PuzzleID
. नाम के कॉलम की तलाश की जाएगी ," यानी, बीच में एक बिंदु के साथ 16 वर्णों का एक स्तंभ नाम।
@ बेल यह ध्यान देने के लिए पुरस्कार का हकदार है कि आप कॉमा-स्टाइल जॉइन और SQL-92 स्टाइल जॉइन को मिला रहे हैं। मैंने उस पर ध्यान नहीं दिया!
आपको एक ही क्वेरी में दोनों का उपयोग नहीं करना चाहिए, क्योंकि जॉइन ऑपरेशंस की प्राथमिकता शायद भ्रम पैदा कर रही है।
JOIN
कीवर्ड की प्राथमिकता अधिक है। आपकी क्वेरी को सरल बनाना ताकि हम तालिका-अभिव्यक्तियों को देख सकें, इसका मूल्यांकन इस प्रकार किया जाएगा:
SELECT . . .
FROM (Puzzles JOIN PuzzleCategories),
(Clients JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages)
समस्या यह है कि PuzzleUsages
. में शामिल हों Puzzles.PuzzleID
. से तुलना करने की जरूरत है कॉलम, लेकिन प्राथमिकता के मुद्दे के कारण, यह नहीं हो सकता। कॉलम पिछले JOIN
. के ऑपरेंड का हिस्सा नहीं है ।
आप त्रुटि को हल करने के लिए कोष्ठक का उपयोग कर सकते हैं, स्पष्ट रूप से तालिका-अभिव्यक्तियों की पूर्वता को ओवरराइड करते हुए (जैसे आप अंकगणितीय अभिव्यक्तियों में कोष्ठक का उपयोग करेंगे):
SELECT . . .
FROM Puzzles JOIN (PuzzleCategories, Clients)
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages
या आप केवल SQL-92 का उपयोग कर सकते हैं JOIN
लगातार वाक्य रचना। मैं @बेल से सहमत हूं कि यह अधिक स्पष्ट है।
SELECT . . .
FROM Puzzles JOIN PuzzleCategories JOIN Clients
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages