0

テーブル: Lead_salesperson

------------------------
id    | sp_id   |  phone
------------------------
0     | 1       |  12345678
1     | 1       |  87654321

表: 製品のプロパティ

------------------------------------------------
product  | sp_id    |  phone    | activity_name
------------------------------------------------
0        | 1        |  12345678 | vm
1        | 1        |  12345678 | DNC
2        | 1        |  87654321 | SCB 
3        | 1        |  77654321 | SCB 

Select DISTINCT(l.phone) as phone 
  from lead_salesperson as l 
  join lead_activity as ls 
  on (ls.phone=l.phone) && (ls.year_make=l.year_make) && (ls.make=l.make) 
 where l.sp_id=$sp_id and ((ls.act_name!='DNC') OR (ls.act_name!='DNC_AUTO'))

したがって、出力は87654321,77654321

DNC または DNC_AUTO を持たないすべての電話番号を取得しようとしています... LeadActivity には、複数の行が lead_salesperson の 1 つの行に接続されている可能性があります。行 (電話) の 1 つでも activity_name に DNC または DNC _AUTO が含まれている場合、その電話を結果セットの一部にしたくありません...これを解決する方法。

4

1 に答える 1

1

除外したい電話を定義するサブクエリでこれを解決できると思います:

select distinct phone
from lead_activity as ls
where act_name in ('DNC', 'DNC_AUTO')

これで、このクエリを条件として使用できます。

select distinct
    l.phone as phone
from
    lead_salesperson as l
where
    phone not in (
        select distinct phone 
        from lead_activity as ls 
        where act_name in ('DNC', 'DNC_AUTO'))

これがお役に立てば幸いです

于 2012-11-02T07:42:04.713 に答える