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

MYSQL क्वेरी में LIKE को IN के साथ कैसे संयोजित करें?

सबसे पहले यह है quote नहीं quote दूसरा आपको quoteName() . का इस्तेमाल करना चाहिए फ़ील्ड के नाम के लिए। तीसरा एपीआई का उपयोग बंद करने का कोई कारण नहीं है क्योंकि आपके पास सबक्वायरी है। साथ ही आपका कोड बहुत भ्रमित है कि कौन सा फ़ील्ड नाम है और कौन सा मान है। मुझे लगता है कि $sf_value उस मान का प्रतिनिधित्व करता है जिसका आप मिलान करने का प्रयास कर रहे हैं और adcfvc.field उस फ़ील्ड का नाम है जो उस डेटा को संग्रहीत करता है जिसका आप मिलान करने का प्रयास कर रहे हैं।

बदलें

 AND ' . $db->Quote(JString::strtolower($sf_value)) . ' = adcfvc.field_value

के साथ

 AND ' .  $db->quoteName( 'adcfvc.field_value' ) . ' LIKE  ' .  $db->quote('%' . JString::strtolower($sf_value) . '%') 

मुझे यकीन नहीं है कि आप वहां JString का उपयोग क्यों कर रहे हैं, लेकिन अगर आपको लगता है कि यह आवश्यक है तो ठीक है।

यह रही आपकी सबक्वायरी

SELECT adcfvc.advert_id
  FROM #__koparent_advert_specific_fields_values AS adcfvc
 WHERE adcfvc.advert_id = p.id
   AND adcfvc.field_name = ' . $db->Quote($sf_key) . '
   AND ' . $db->Quote(JString::strtolower($sf_value)) . ' = adcfvc.field_value

इसलिए आपके पास $db . है पहले से ही।

$subquery = $db->getQuery(true); 
// Assuming p.id is an integer
$subquery->where($db->quoteName(adcfvc.advert_id) = p.id)
//Assuming $sf_key is an integer
->where($db->quoteName(adcfvc.field_name) . ' = ' . $sf_key)
->where($db->quoteName(adcfvc.field_value) . ' LIKE ' 
    .   $db->Quote('%'. JString::strtolower($sf_value) . '%')) ;

फिर शीर्ष स्तर की क्वेरी में, जिसका आपने अभी-अभी हमें एक भाग दिखाया है, कुछ इस तरह

$query->where('p.id IN (' . $subquery . ')' );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल COUNT चुनें DISTINCT

  2. मैं mysql के लिए ActiveRecord क्वेरी टाइमआउट कैसे सेट करूं?

  3. उच्च ट्रैफ़िक डेटाबेस पर फ़िल्टर का उपयोग करके MySQL पंक्तियों की गणना करता है

  4. 2 वेबसाइटों पर समान लॉगिन

  5. त्रुटि 2003 (HY000):AWS RDS पर MySQL सर्वर से कनेक्ट नहीं हो सकता