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

MySQL एक-से-अनेक क्वेरी अस्वीकृति और/या एकाधिक मानदंडों के साथ

मैं बिना किसी सबक्वेरी के बहिष्करण जॉइन लिखूंगा:

SELECT p.productid
FROM   products p
INNER JOIN producttags AS t ON p.productid = t.productid
LEFT OUTER JOIN producttags AS x ON p.productid = x.productid 
       AND x.tag IN ('Motorcycle', 'Green')
WHERE  p.active = 1
       AND t.tag IN ( 'Ford', 'Black', 'Skateboard' )
       AND x.productid IS NULL;

सुनिश्चित करें कि आपके पास उस क्रम में दो कॉलम (सक्रिय, उत्पादक) पर उत्पादों पर एक अनुक्रमणिका है।

आपके पास उस क्रम में दो कॉलम (उत्पाद आईडी, टैग) पर उत्पाद टैग पर एक अनुक्रमणिका भी होनी चाहिए।

एक और प्रश्न जो मुझे करने की आवश्यकता है वह है कुछ (कार) या (स्केटबोर्ड) या (हरा और मोटरसाइकिल) या (लाल और मोटरसाइकिल)।

कभी-कभी ये जटिल स्थितियां MySQL अनुकूलक के लिए कठिन होती हैं। सरल प्रश्नों को संयोजित करने के लिए UNION का उपयोग करना एक सामान्य समाधान है:

SELECT p.productid
FROM   products p
INNER JOIN producttags AS t1 ON p.productid = t1.productid
WHERE  p.active = 1
   AND t1.tag IN ('Car', 'Skateboard')

UNION ALL

SELECT p.productid
FROM   products p
INNER JOIN producttags AS t1 ON p.productid = t1.productid
INNER JOIN producttags AS t2 ON p.productid = t2.productid 
WHERE  p.active = 1
   AND t1.tag IN ('Motorcycle')
   AND t2.tag IN ('Green', 'Red');

पुनश्च:आपकी टैगिंग तालिका एक इकाई-विशेषता-मान तालिका नहीं है।



  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. बहुत लगातार /opt/lampp/bin/mysql.server:264:किल:ऐसी कोई प्रक्रिया नहीं है। Xampp/उबंटू 16.04

  3. पायथन:मैं datetime.timedelta ऑब्जेक्ट से समय कैसे प्राप्त करूं?

  4. MySQL में महीने का आखिरी शुक्रवार

  5. जीपीएल और libmysqlclient