sql >> データベース >  >> RDS >> Mysql

MYSQLクエリでLIKEとINを組み合わせる方法は?

    まず第一に、それはquoteです Quoteではありません .2番目にquoteName()を使用する必要があります フィールドの名前について。第3に、サブクエリがあるという理由だけでAPIの使用を停止する理由はありません。また、コードは、フィールド名と値について非常に混乱しています。 $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. MySQLのSQLExceptionエラーコードのリストはどこにありますか?

    2. 接続ごとに複数のトランザクションを持つMySQLdb

    3. リモートデータベースに134675の値を挿入する最速の方法

    4. mySQLを使用して複数のテーブルからランキングを返す