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

Mysql सशर्त तर्क के साथ चयन करें

SELECT days.meta_value
FROM tableName AS from_country,
     tableName AS to_country,
     tableName AS days
WHERE from_country.item_id = to_country.item_id
  AND from_country.item_id = days.item_id
  AND from_country.field_id = 90
  AND to_country.field_id = 93
  AND days.field_id = 251

यदि आप from_country.meta_value . द्वारा फ़िल्टर करना चाहते हैं, तो आप और प्रतिबंध जोड़ सकते हैं या इसी के समान। और आपको tableName . को बदलना चाहिए तालिका के वास्तविक नाम के साथ।

from_country के बारे में सोचें , to_country और days आपकी तालिका में पंक्तियों के लिए तीन अलग-अलग पॉइंटर्स के रूप में, या वैकल्पिक रूप से अलग-अलग चर आपके संबंध से मूल्य लेते हैं। आप चाहते हैं कि वे तीनों एक ही आइटम का वर्णन करें, और आप यह भी चाहते हैं कि उनमें से प्रत्येक अपने नाम से जुड़े फ़ील्ड को संदर्भित करे। इसका परिणाम ऊपर बताई गई स्थितियों में होता है।

आप इस बुरी तरह से डिज़ाइन की गई तालिका को ठीक से डिज़ाइन की गई तालिका तक पहुँचने के लिए एक दृश्य भी बना सकते हैं:

CREATE VIEW viewName AS
SELECT item.item_id AS item_id,
       from_country.meta_value AS from_country,
       to_country.meta_value AS to_country,
       days.meta_value AS days
FROM (SELECT DISTINCT item_id FROM tableName) AS item
     LEFT JOIN tableName AS from_country
            ON (from_country.item_id = item.item_id AND
                from_country.field_id = 90)
     LEFT JOIN tableName AS to_country
            ON (to_country.item_id = item.item_id AND
                to_country.field_id = 93)
     LEFT JOIN tableName AS days
            ON (days.item_id = item.item_id AND
                days.field_id = 251)

यह चार स्तंभों वाला एक दृश्य बनाएगा, जिसमें से आप आसानी से चुन सकते हैं:

SELECT days FROM viewName WHERE from_country LIKE 'A%'

या जो भी आप चुनना चाहते हैं। ध्यान दें कि बाईं ओर जुड़ने के कारण, कुछ आइटम के लिए अनुपलब्ध मान 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. LIMIT के साथ MySQL तालिका से औसत चुनें

  2. केवल (My)SQL का उपयोग करके लिमिट ऑफ़सेट को डायनेमिक कैसे बनाया जाए

  3. MySQL में संवेदनशील डेटा स्टोर करने का सबसे अच्छा तरीका क्या है?

  4. संपूर्ण mysql डेटाबेस ढूंढें और बदलें

  5. निजी संदेश प्रणाली। प्रत्येक वार्तालाप का अंतिम संदेश सूचीबद्ध करना