Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để kết hợp LIKE với IN trong một truy vấn MYSQL?

Trước hết, đó là quote không phải Quote Thứ hai, bạn nên sử dụng quoteName() Thứ ba, không có lý do gì để ngừng sử dụng API chỉ vì bạn có một truy vấn con.Ngoài ra, mã của bạn rất khó hiểu về việc đâu là tên trường và đâu là giá trị. Tôi giả sử rằng $sf_value đại diện cho giá trị mà bạn đang cố gắng đối sánh và adcfvc.field là tên của trường lưu trữ dữ liệu mà bạn đang cố gắng đối sánh.

Thay thế

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

với

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

Tôi không chắc tại sao bạn lại sử dụng JString ở đó nhưng nếu bạn cảm thấy nó cần thiết thì tốt.

Đây là truy vấn con của bạn

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

Vì vậy, bạn vì bạn có $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) . '%')) ;

Sau đó, trong truy vấn cấp cao nhất mà bạn vừa cho chúng tôi thấy một phần của nó, giống như

$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. Sự cố mã hóa ký tự với PHP Trình phân tích cú pháp DOM HTML đơn giản

  2. Tích hợp hình ảnh với jQuery AutoComplete

  3. Làm thế nào để xóa các bản ghi trùng lặp trong cơ sở dữ liệu mysql?

  4. Cách hoàn hảo để sử dụng cập nhật / lưu trữ dữ liệu MySQL mà không có độ trễ và lỗi khi cập nhật số liệu thống kê

  5. Cách làm việc với truy vấn con MySQL