php - One mysql query between three table -


मेरे पास तीन तालिकाओं हैं

  1. उपयोगकर्ता - उपयोगकर्ता _id 2. पुस्तकें- book_id-book_name -यूसर_आईड 3. पसंद -अन्य_यूसर_आईडी-बुक_आईड   

मुझे केवल 'users.user_id' पता है और मुझे पुस्तकों की सूची में पसन्द की गई तालिका से बुक नाम और प्रत्येक पुस्तक की गणना करना है। / p>

नोट: उपयोगकर्ता पुस्तकों और अन्य उपयोगकर्ताओं को पसंद करते थे। इसलिए परिणामस्वरूप JSON सरणी को पसंद आएगा .. I इनपुट mysql केवल user_id = 10 और यह प्रिंट करता है ....

  {उपयोगकर्ता आईडी: 10, उपयोगकर्ता नाम: cemsitcan, बुक नाम: नमूना, बुक पसंद आया: 120 बार।} {उपयोगकर्ता आईडी: 10, उपयोगकर्ता नाम: cemsitcan, बुक नाम: नमूना 1, पुस्तक पसंद है: 10 बार।} {उपयोगकर्ता आईडी: 10, उपयोगकर्ता नाम: cemsitcan, बुक नाम: नमूना 2, किताब पसंद है: 123 बार।}    

आपको इस के लिए उपयोगकर्ता तालिका की आवश्यकता नहीं है अगर आप इस क्वेरी का उपयोग करते हैं:

  SELECT *, (SELECT COUNT (`अन्य_यूसर_आईडी`)` पसंद 'कहां से `पुस्तकें'। 'बुक_आईडी` =' पसंद '।' बुक_आईडी`) एएस` Likes_Count` `पुस्तक से` `उपयोगकर्ता _id` = 10;   

बेला:
  बनाओ टेबल बुक (`बुक_आईडी` एट,` बुक_नाम` वर्चार (30), `यूज़र_आईडी` एट); मूवीज़ ('बुक_आईडी`, `बुक_नाम`,` यूज़र_आईडी`) के अंदर INSERT VALUES (1,' हैलो वर्ल्ड 5 ', 5), (2,' हैलो वर्ल्ड बाय 10 ', 10), (3,' माइक्रोसॉफ्ट 7 ', 7), (4,' इसकी एक छोटी दुनिया 10 ', 10), (5,' स्टैक ओवरफ्लो महान 10 से 10 ', 10); टेबल उपयोगकर्ता बनाएं (`User_id` int,` User_name` varchar (15)); यूजर (`यूज़र_आईडी`,` यूज़र_नाम`) मूल्यों (1, 'प्रवीण'), (5, 'उपयोगकर्ता'), (10, 'प्रवीण कुमार') में प्रवेश करें; तालिका पसंद बनाएं (`User_id` int,` Book_id` int); मूल्यों में प्रविष्ट करें (`User_id`,` Book_id`) मान (1, 5), (1, 1), (1, 10), (2, 10), (3, 5), (3, 10);   

और क्वेरी:

  SELECT *, (SELECT COUNT (`User_id`)` पसंद 'से WHERE `Books`।` book_id` = ` पसंद `।` _Book_id`) AS `Likes_Count` से` पुस्तकें 'कहां `User_id` = 10;   

आउटपुट:

  + --------- + ---------------- -------------- + --------- + ------------- + | BOOK_ID | BOOK_NAME | USER_ID | LIKES_COUNT | + --------- + ------------------------------ + -------- - + ------------- + | 2 | हैलो वर्ल्ड 10 के द्वारा | 10 | 0 | | 4 | इसकी एक छोटी दुनिया 10 से | 10 | 0 | | 5 | StackOverflow 10 से महान है | 10 | 2 | + --------- + ------------------------------ + -------- - + ------------- + +   

यदि आप चाहते हैं कि लेखक को परिणाम के साथ प्रदर्शित किया जाए, तो आपको इसकी आवश्यकता है: <पूर्व> SELECT COUNT (`User_id`) से` पसंद 'कहें जहां `पुस्तकें।` Book_id` =' पसंद करती हैं '।' बुक_आईडी`) के रूप में 'पसंद' की सूची, (`यूजर 'से' यूज़र_नाम का चयन करें 'कहां `उपयोगकर्ता`।` यूज़र_आईडी` = `पुस्तकें`। यूज़र_आईडी``)` पुस्तक 'से `लेखक` जहां` यूज़र_आईडी` = 10;

आउटपुट है:

  + --------- + -------------- ---------------- + --------- + ------------- + --------- ------ + | BOOK_ID | BOOK_NAME | USER_ID | LIKES_COUNT | लेखक | + --------- + ------------------------------ + -------- - + ------------- + --------------- + | 2 | हैलो वर्ल्ड 10 के द्वारा | 10 | 0 | प्रवीण कुमार | | 4 | इसकी एक छोटी दुनिया 10 से | 10 | 0 | प्रवीण कुमार | | 5 | StackOverflow 10 से महान है | 10 | 2 | प्रवीण कुमार | + --------- + ------------------------------ + -------- - + ------------- + --------------- +   

पिंड:

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -