समस्या यह है कि जब आप GROUP BY
. का उपयोग करते हैं , आप केवल SELECT
कर सकते हैं समुच्चय और आपके द्वारा समूहीकृत किए गए स्तंभ।
invoices.id
एक कॉलम है जिसे आपने चुनने का प्रयास किया, लेकिन समूह नहीं किया। मुझे लगता है कि आप शायद इस कॉलम को GROUP BY
. में जोड़ना चाहते हैं खंड।
SELECT
invoices.id,
sum(grossTotal)-IFNULL(depositsCheck.previouslyPaid,0) as todayTotal,
depositsCheck.previouslyPaid, sum(grossTotal) as grossTotal
FROM `invoices`
LEFT JOIN (SELECT SUM(amount) as previouslyPaid, invNo
FROM deposits
GROUP BY invNo) depositsCheck ON depositsCheck.invNo=invoices.id
GROUP BY invoices.paymentType, invoices.id ORDER BY id DESC
आपके द्वारा दिए गए उदाहरण तालिकाओं के लिए, यह संभवतः देगा:
id | paymentType | grossTotal | dateTime | previouslyPaid
1 | Cash | 1000 | UNIX TIME | 150
2 | Card | 1350 | UNIX TIME | 350
3 | Card | 1250 | UNIX TIME | 0
4 | Card | 750 | UNIX TIME | 0
लेकिन सामान्य तौर पर, आपके पास कुछ ऐसा होगा:
id | paymentType | grossTotal | dateTime | previouslyPaid
1 | Cash | 1000 | UNIX TIME | 150
1 | Card | 1000 | UNIX TIME | 300
2 | Cash | 1350 | UNIX TIME | 350
2 | Card | 1350 | UNIX TIME | 350
जहां आप ऊपर देख सकते हैं, चालान 1 के लिए, 150 का भुगतान नकद में किया गया था, और 300 का भुगतान कार्ड द्वारा किया गया था।