-1

基本的に、mySQL クエリ中に NOT IN 関数を 2 回使用しようとしています。現在の新しいクエリは次のとおりです。

SELECT `o`.`id`, `o`.`name`, `o`.`url`, `o`.`type`, `o`.`desc` FROM `offers` as `o` 
WHERE `o`.country_iso = '$country_iso' AND `o`.`id` not in 
(select distinct(offer_id) from conversions where ip = '$_SERVER[REMOTE_ADDR]' 
and converted != '0') AND `o`.`id` not in 
(select `offer_id` from `aff_disabled_offers` where `offer_id` = 'o.id' 
and `user_id` = '1') ORDER by rand() LIMIT $limit

クエリは機能しますが、何らかの理由でこれを完全に無視しています

AND `o`.`id` not in 
(select `offer_id` from `aff_disabled_offers` where `offer_id` = 'o.id') 
4

1 に答える 1

1

AND や OR など、条件の間に演算子を指定する必要があります。NOT IN 句内にも有効なクエリが必要です。

SELECT `o`.`id`, `o`.`name`, `o`.`url`, `o`.`type`, `o`.`desc` 
FROM `offers` as `o` 
WHERE `o`.country_iso = '$country_iso' 
AND `o`.`id` not in (select distinct(offer_id)
                     from converstions where
                     from conversions 
                     where ip = '$_SERVER[REMOTE_ADDR]' 
                     and converted != '0')
AND `o`.`somevar` not in (select `somevar` from 
                          `sometable` where `offer_id` = 'o.id')
ORDER by rand() LIMIT 0,6
于 2013-01-12T00:41:09.027 に答える