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

SQL में परस्पर अनन्य मान

अगर मैं आपके प्रश्न को सही ढंग से समझता हूं, तो products तालिका में डिफ़ॉल्ट मूल्य और product_prices . होगा टेबल की कोई और कीमत होगी।

आप जानना चाहते हैं कि डिफ़ॉल्ट मूल्य का उपयोग कहां किया जा रहा है, जिसका अर्थ है कि कोई अन्य मूल्य नहीं हैं। इसके लिए, left outer join का उपयोग करें :

SELECT p.*, coalesce(pp.price, p.default_price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId
WHERE pp.price = GIVENPRICE or pp.price is null

आपकी टिप्पणी के आधार पर, आप रिकॉर्ड में डिफ़ॉल्ट कीमतों को संग्रहीत कर रहे हैं, जिसमें व्यवसाय आईडी NULL है। इस मामले में, मैं मूल्य तालिका में दो जॉइन करूंगा:

SELECT p.*, coalesce(pp.price, defpp.price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId and pp.price = GIVENPRICE left outer join
     products_prices defpp
     on p.id = defpp.productId and defpp.businessId is NULL

पहले जॉइन को दी गई कीमत से मेल खाने वाली कीमत मिलती है। दूसरा डिफ़ॉल्ट मूल्य प्राप्त करता है। पहला परिणाम प्रयोग किया जाता है, यदि मौजूद है, अन्यथा दूसरा प्रयोग किया जाता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL के साथ समयरेखा में परिवर्तन गिनना

  2. LCASE () फ़ंक्शन MySQL में कैसे काम करता है

  3. PHP MySQL एकाधिक तालिकाओं में डेटा सम्मिलित कर रहा है

  4. MySQL DELETE FROM सबक्वेरी के साथ कंडीशन के रूप में

  5. त्रुटि 2002 (HY000):सॉकेट के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता '/var/lib/mysql/mysql.sock'