मुझे पूरा यकीन है कि आपकी समस्या आपके GROUP BY
. के कारण है खंड। सुनिश्चित नहीं है कि इसका उपयोग करने में आपका उद्देश्य क्या था, लेकिन इसके बिना प्रयास करें। यदि आपको डुप्लीकेट पंक्तियां मिलती हैं, तो SELECT DISTINCT
. का उपयोग करके देखें . यदि आपका उद्देश्य उस कॉलम के आधार पर परिणामों को क्रमित करना था, तो ORDER BY
. का उपयोग करें ।
साथ ही, receipt_no
. निर्दिष्ट करना WHERE
. में दो बार उपवाक्य अनावश्यक है। वे दो टेबल पहले से ही उस कॉलम से जुड़े हुए हैं, इसलिए इसे एक टेबल में फ़िल्टर करना आपको बस इतना करना है। और कुछ विशेष अपवादों को छोड़कर बैकटिक्स वास्तव में आवश्यक नहीं हैं, जैसे कॉलम नाम में रिक्त स्थान या अल्पविराम, या आरक्षित शब्दों के समान नाम वाले कॉलम (कुछ अन्य भी हो सकते हैं)। आपका एकमात्र कॉलम जो ऐसा लगता है कि उसे बैकटिक्स की आवश्यकता है, वह है date
कॉलम, लेकिन उस कॉलम पर उन्हें छोड़कर, आपको अभी भी ठीक होना चाहिए। मुझे लगता है कि बैकटिक्स हर जगह क्वेरी को पढ़ने में लंबा और कठिन बना देता है। वे वहां होने से कुछ भी चोट नहीं पहुंचाते हैं, इसलिए यदि आपकी पसंद है तो आप उन्हें छोड़ सकते हैं, लेकिन व्यक्तिगत रूप से, मैं प्रशंसक नहीं हूं।
मैंने ऊपर बताए गए अपने संशोधनों के साथ आपकी क्वेरी को फिर से लिखा, साथ ही मैंने इसे और छोटा करने के लिए टेबल उपनाम दिए। यह प्रदर्शन या किसी भी चीज़ में सुधार नहीं करता है, बस IMO को पढ़ना आसान बनाता है:
SELECT DISTINCT
b.receipt_no, client, operator, discount, total_amount,
amount_paid, balance, `date`, jobtitle, quantity,
amount, date_paid, old_balance, debtor_amount_paid, new_balance
FROM
booking b
INNER JOIN jobtitle jt ON jt.bookingID = b.bookingID
INNER JOIN first_graphics_debtors fgd ON fgd.receipt_no = b.receipt_no
WHERE
b.receipt_no = '753263343'
ORDER BY
jt.quantity