Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak połączyć LIKE z IN w zapytaniu MYSQL?

Przede wszystkim jest to quote nie Quote . Po drugie, powinieneś użyć quoteName() dla nazw pól. Po trzecie, nie ma powodu, aby przestać używać API tylko dlatego, że masz podzapytanie. Również twój kod jest bardzo mylący, jeśli chodzi o to, która jest nazwą pola, a która jest wartością. Zakładam, że $sf_value reprezentuje wartość, którą próbujesz dopasować i adcfvc.field to nazwa pola, które przechowuje dane, które próbujesz dopasować.

Zastąp

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

z

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

Nie jestem pewien, dlaczego używasz tam JString, ale jeśli uważasz, że jest to konieczne, w porządku.

Oto Twoje podzapytanie

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

Więc ty, ponieważ masz $db już.

$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) . '%')) ;

Następnie w zapytaniu najwyższego poziomu, którego właśnie pokazałeś nam jedną część, coś takiego jak

$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. Zapisywanie obiektów Pickled Pythona w bazie danych MySQL

  2. Nieprawidłowa wartość ciągu w python+django+Mysql

  3. MONTHNAME() Przykłady – MySQL

  4. Jak dodać w każdym tagu linku (a href) atrybut rel za pomocą php?

  5. Jakie sortowanie MySQL jest najlepsze do akceptowania wszystkich znaków Unicode?