Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक ही तालिका में एक ही स्तंभ नाम के साथ कई मान प्रतिध्वनित करें

प्रो टिप:कभी नहीं SELECT * . का उपयोग करें सॉफ्टवेयर में जब तक आप ठीक से नहीं जानते कि आप ऐसा क्यों कर रहे हैं। आपके मामले में यह हानिकारक है।

मुझे लगता है कि आपकी क्वेरी वास्तव में user . के विरुद्ध है और trade आपने अपने प्रश्न में जिन तालिकाओं का उल्लेख किया है।

सबसे पहले, 21वीं सदी के SQL का उपयोग करके अपनी क्वेरी को इस प्रकार पुन:व्यवस्थित करें:

SELECT * 
  FROM trade AS t
  JOIN user AS s ON  s.user_id = t.user_id_sender
 WHERE s.facebook_id = $fbid 

दूसरा, इसका उपयोग अपने उपयोगकर्ता के नाम और ट्रेड की गई आइटम आईडी को पुनः प्राप्त करने के लिए करें।

SELECT s.user_name AS sender,
       r.user_name AS receiver,
       t.trade_id AS item_id
  FROM trade AS t
  JOIN user AS s ON  s.user_id = t.user_id_sender
  JOIN user AS r ON  r.user_id = t.user_id_receiver
 WHERE s.facebook_id = $fbid 

देखें कि हम कैसे JOIN user तालिका दो बार, दो अलग-अलग उपनामों के साथ s (प्रेषक के लिए) और r (रिसीवर के लिए)? आईडी से दोनों नाम निकालने की यही तरकीब है।

देखें कि हम उपनामों को कैसे नियोजित करते हैं sender और receiver दो user_name . को स्पष्ट करने के लिए परिणाम सेट में कॉलम?

अब, जब आप php fetch_array . का उपयोग करते हैं फ़ंक्शन, आप सरणी में इन तत्वों के साथ समाप्त हो जाएंगे।

$history['sender']
$history['receiver']
$history['item_id']

सरणी अनुक्रमणिका स्ट्रिंग आपके SELECT . में निर्दिष्ट उपनाम नामों से मेल खाती है आपकी क्वेरी में खंड।

तो, SELECT * . से बचने का एक कारण यह है कि आप एक ही नाम के एक से अधिक कॉलम प्राप्त कर सकते हैं, और इसका अर्थ है fetch_array उन डुप्लिकेट को हटा देगा और इसलिए यह आपके परिणाम सेट से उपयोगी जानकारी खो देगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑपरेंड में 1 कॉलम होना चाहिए

  2. MySQL को Python 3.6 . से कनेक्ट करें

  3. कमांड लाइन से mysql रिमोट डेटाबेस एक्सेस करें

  4. MySQL उपयोगकर्ता को होस्ट एक्सेस अनुमति पुन:असाइन करें

  5. mysql से डेटा पुनर्प्राप्त करें और इसे ईमेल करें