一个帐目表A,里面有三个重要字段:serv_id,acct_id,acct_item_type_id,
我想实现的sql是这样的
已知acct_id,根据acct_id找到对应的所有serv_id,假设对应了两个serv_id1,serv_id2。
然后根据acct_id,serv_id,找到对应的所有acct_item_type_id,例如:
1。acct_id,serv_id1在表A中有 acct_item_type_id1,acct_item_tpye_id2
2。acct_id,serv_id2在表A中有 acct_item_type_id1,acct_item_type_id3怎样才能通过sql语句找到 1。和2。的交集呢,也就是sql选出的最后结果是acct_item_type_id1请大家不吝赐教啊!!

解决方案 »

  1.   

    最直接的:
    (查询出结果集一的sql)
    ninus
    (查询出结果集二的sql)
      

  2.   

    但是不一定只有两个结果集啊,我在查前不知道一个acct_id对应了几个serv_id的?
      

  3.   

    麻烦点但效率高的:
    select * from table where 
    (查询出结果集1的条件集) and (查询出结果集2的条件集)
      

  4.   

    只有一个已知条件acct_id,要查出这个acct_id对应的所有serv_id的acct_item_type_id的交集。
      

  5.   

    select distinct acct_item_type_id from table tt1 where not exists
    (
    select 1 from 
    (
    select * from table t1 where acct_id and not exists (select 1 from table t2 where t1.acct_id = t2.acct_id and t1.acct_item_type_id = t2.acct_item_type_id and t1.serv_id != t2.serv_id)
    ) tt2 where tt1.acct_id = tt2.acct_id and tt1.serv_id = tt2.serv_id and tt1.acct_item_type_id = tt2.acct_item_type_id
    )
      

  6.   

    不知道你表结构是怎样的,可不可以这样直接通过acct_id去找acct_item_type_id,group by acct_id,然后计算出相同的acct_item_type_id的数量,去和serv_id的数量比较一下,相同就是这个acct_item_type_id,不同就是没有数据
      

  7.   

    一个帐目表A,里面有三个重要字段:serv_id,acct_id,acct_item_type_id,
    我想实现的sql是这样的
    已知acct_id,根据acct_id找到对应的所有serv_id,假设对应了两个serv_id1,serv_id2。
    然后根据acct_id,serv_id,找到对应的所有acct_item_type_id,例如:
    1。acct_id,serv_id1在表A中有 acct_item_type_id1,acct_item_tpye_id2
    2。acct_id,serv_id2在表A中有 acct_item_type_id1,acct_item_type_id3最后结果的acct_item_type_id1,对应的serv_id集合,也是acct_id对应的serv_id集合select acct_item_type_id
    where acct_id = ?
    group by acct_item_type_id
    having count(distinct serv_id) = (
      select count(distinct serv_id)
      where acct_id = ?
    )