php - How to fix mysql subquery display -


  चुनें उपयोगकर्ता। उपयोगकर्ता नाम, IFNULL (SUM (क्रेडिट) - SUM (डेबिट), 0) कुल, ( SELECT SUM (Bid.credit) - SUM (bid.debit) के रूप में उपयोगकर्ता द्वारा मुफ्त बीड्स के रूप में उपयोगकर्ता के रूप में निविदाएं बोली के रूप में बोली पर बोली के रूप में बोली- user.id = User.id बोली बोली प्रकार = 2) फ्री बीड्स के रूप में, (SELECT SUM (Bid.credit) ) - एसयूएम (बिड.डिबट) एएस सामान्य बीड्स के रूप में उपयोगकर्ता से उपयोगकर्ता के रूप में बोली के रूप में निविदाएं बोली- बोली-। उपयोगकर्ता = बोली के रूप में बोली = प्रकार या बोली = प्रकार = 1) उपयोगकर्ता द्वारा सामान्य बिड्स के रूप में प्रयोक्ता के रूप में छोड़ दें जुड़िये बोली बोली- बोली पर बोली- user.id  उपयोगकर्ता <आईडी   

यह मेरी नमूना तालिका है: उपयोगकर्ताओं के लिए

  आईडी उपयोगकर्ता नाम 1 उपयोगकर्ता 1 2 उपयोगकर्ता 2 3 उपयोगकर्ता के लिए 4 उपयोगकर्ता 4   

बोलियों के लिए

  आईडी user_id डेबिट क्रेडिट प्रकार 1 1 0 10 0 2 1 1 5 2 3 1 1 0 2 4 3 0 10 0 6 2 0 10 0 7 4 1 10 0 8 4 1 0 1   

लेकिन मुझे सबक्यूरी (फ्रीबिड्स और सामान्य बीड्स) को प्रदर्शित करने में समस्या आ रही है, यहां सभी समान मूल्य हैं नमूना प्रदर्शन: <पूर्व> उपयोगकर्ता नाम कुल फ्रीबीड्स सामान्य बीड्स user1 1 0 1280 9 9 65 उपयोगकर्ता 2 20 1280 9 9 65 उपयोगकर्ता 3 9 1280 9 9 65 उपयोगकर्ता 4 0 1280 9 9 65

मुझे पता नहीं है कि मैं अपनी क्वेरी में कहां गया था। मेरी समस्या का समाधान करने के लिए कोई सुझाव? आपकी मदद के लिए धन्यवाद।

कारण यह है कि सभी समान मूल्यों को दिखाया गया था क्योंकि इसमें कोई अंतर नहीं था बाहरी क्वेरी में उपयोगकर्ता तालिका और आंतरिक क्वेरी में उपयोगकर्ता तालिका के बीच। वे दोनों एक ही उपनाम है आपको अलग-अलग उपनाम (जैसे u ) के साथ असाइन करके बाह्य उपयोगकर्ता तालिका या आंतरिक उपयोगकर्ता तालिका को अलग करना चाहिए ताकि उप-भाग जानता है कि बाहरी मूल्य के लिए कौन सी तालिका संदर्भित है:

  ... से यूजर के रूप में ...   

यह कहने के लिए, यह अत्यधिक अक्षम है ऐसे उप-प्रकारों का उपयोग करें, क्योंकि उन्हें अपने उपयोगकर्ता तालिका में प्रत्येक पंक्ति के लिए निष्पादित करने की आवश्यकता होगी (हम पूरे तालिकाओं के बारे में बात कर रहे हैं जुड़े हुए और फ़िल्टर्ड के रूप में कई बार उपयोगकर्ता एक्स 2 हैं)।

आपकी क्वेरी को सशर्त एकत्रीकरण का उपयोग करके अधिक कुशलता से पुनः लिखा जा सकता है:

  SELECT a.username, IFNULL (SUM) (बी सी क्रेडिट) - एसयूएम (बी.डिबिट), 0) कुल के रूप में, एसएम (यदि (बी.प्रकार = 2, बीसीएडिट, 0)) - एसएम (यदि (बी.प्रॉप = 2, बी.डिबिट, 0)) फ्रीबाइड्स के रूप में, एसएम (यदि (बीपीटीपी में (0,1), बी सी क्रेडिट, 0)) - एसएम (IF (बीपी टाइप IN (0,1), बी.डिबिट, 0)) एएस सामान्य बिड्स उपयोगकर्ताओं से एक निचले निमंत्रण बी बोल पर a.id = b.user_id GROUP द्वारा a.id, a.username < जो मूल रूप से कहते हैं:  SUM केवल क्रेडिट / डेबिट अगर प्रकार  x  मान  है, और आप SUM / COUNT / AVG / आदि। किसी भी शर्त पर आप केवल एक तालिका में शामिल होने के साथ काम करना चाहते हैं।  



Comments

Popular posts from this blog

Python SQLAlchemy:AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema' -

java - How not to audit a join table and related entities using Hibernate Envers? -

mongodb - CakePHP paginator ignoring order, but only for certain values -