有三张表:
User(id,name......)
T1(id,name,.....,user_id)
T2(id,user_id1,user_id2)    这是user自身多对多的中间表,我也给建立了实体类。//现在我要查询T1,条件是T1.user_id=T2.user_id2;我要通过T2.user_id1,找出它在T2表中对应的user_id2,然后再去找T1中符合T1.user_id=T2.user_id2条件的记录。我不想发多次查询,因为我要排列。请问要怎么弄?T2是个多对多的表,所以可能根据T2.user_id1返回的user_id2会有多个。。不知道我表达的清不清楚求指导。。

解决方案 »

  1.   

    看不懂你到底要什么User
    id  name
    1    a
    2    b
    3    cT1
    id  name  user_id
    1    a     1
    2    b     2
    3    c     3T2
    user_id1   user_id2
    1           2
    1           3
    2           1
    你到底要什么样子的结果》?
      

  2.   

    就上面的数据的话,我要的是:
    假如页面传来数据user_id1=1;要先找到对应的user_id2,在去T1表查user_id2对应的记录(也就是user_id=user_id2),但我不想发两条sql语句,因为T1表里其实还有个时间字段,我要根据时间字段来排序结果。。不然的话,我得在程序里自己排序。不知道这样请不清楚
      

  3.   


    其实就是页面传来数据user_id1=1;
    要的结果是:
    T1
    id name user_id
    2 b 2
    3 c 3
      

  4.   


    select id, name, user_id
    from T1 c
    where exists(select 1 from T1 a, T2 b where a.user_id = b.user_id1 and a.user_id = 1 and b.user_id2 = c.user_id)
    order by `时间字段`
      

  5.   

    declare @a -- 页面传入值
    select * from T1 where user_id in(select user_id2 where user_id1=@a)
      

  6.   

    select *                       
    from T1 r,T2 t
    where r.user_id1 =@yourparam
    and r.user_id=t.user_id2
    order by t1.ftime desc
      

  7.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  8.   


    不好意思,我数据库比较薄弱。表我是让hibernate帮我建的。。所以我不能重新生成,不然我数据就丢了。只是搞不定了才上来问的。其实我就是要那个in的用法。其实我还不知道有in这东西,所以我google也找不到什么有用的信息。我还菜鸟。