有三张表:
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会有多个。。不知道我表达的清不清楚求指导。。
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会有多个。。不知道我表达的清不清楚求指导。。
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
你到底要什么样子的结果》?
假如页面传来数据user_id1=1;要先找到对应的user_id2,在去T1表查user_id2对应的记录(也就是user_id=user_id2),但我不想发两条sql语句,因为T1表里其实还有个时间字段,我要根据时间字段来排序结果。。不然的话,我得在程序里自己排序。不知道这样请不清楚
其实就是页面传来数据user_id1=1;
要的结果是:
T1
id name user_id
2 b 2
3 c 3
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 `时间字段`
select * from T1 where user_id in(select user_id2 where user_id1=@a)
from T1 r,T2 t
where r.user_id1 =@yourparam
and r.user_id=t.user_id2
order by t1.ftime desc
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
不好意思,我数据库比较薄弱。表我是让hibernate帮我建的。。所以我不能重新生成,不然我数据就丢了。只是搞不定了才上来问的。其实我就是要那个in的用法。其实我还不知道有in这东西,所以我google也找不到什么有用的信息。我还菜鸟。