↑〓◆※ 菜鸟提问,关于多表查询, 谢谢参与 ※★▲↓
有4个表,
table1 ID1 ........
table2 ID2 ........
ID1
table3 ID3 ........
ID2
table4 ID4 ........
ID3
意思是说在表table4中有一个字段的内容指向是在表table3,
而在表table3中有一个字段的内容指向是在表table2,
而在表table2中有一个字段的内容指向是在表table1。
我现在知道表table1中的ID1, 我要得到所有的table4的ID4是包括在table1中!
问题点数:123、回复次数:24Top
1 楼wltsui(-无招胜有招-)回复于 2002-12-19 11:14:29 得分 0
不知道大家明白我的意思吗, 有数据库的高手快来帮忙! 关键是用sql怎么查询, 我用CDaoRecordset!Top
2 楼wltsui(-无招胜有招-)回复于 2002-12-19 11:25:37 得分 0
郁闷, 没有人知道吗?
救命呀!!Top
3 楼whorchid(*)兰花一现(*)回复于 2002-12-19 11:34:09 得分 30
用复合查询吧, 具体的忘了:
SELECT *
FROM table_name1
WHERE EXISTS
(SELECT *
FROM table_name2
WHERE conditions)
^_^
Top
4 楼wltsui(-无招胜有招-)回复于 2002-12-19 12:28:45 得分 0
高手都去哪了, 难道没有人知道吗??Top
5 楼wltsui(-无招胜有招-)回复于 2002-12-19 12:40:50 得分 0
我等到花儿也谢了!Top
6 楼wltsui(-无招胜有招-)回复于 2002-12-19 13:50:54 得分 0
引用 spwnihao(下岗职工) 的:
我也不知道能不能解决,谈一下自己的想法吧。
我看这是一个几个表的对应关系,好像是一对多,多对多的问题
如果用一个sql语句完成好象比较困难,如果分开处理的话就简单多了
m_pRecordset->Open("SELECT * FROM table2 as tbl2 table1 as tbl1 where tbl2.ID1 = tbl1.ID1",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordset->adoEOF)
{
TheValue_ID2 = m_pRecordset->GetCollect("ID2");
m_pRecordset2->Open("SELECT * FROM table2 as tbl2 table1 as tbl1 where tbl2.ID1 = tbl1.ID1",(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
while(!m_pRecordSet->adoEof())
{
......
}
m_pRecordSet->MoveNext();
}
有人吗, 大家帮帮忙! 看一看, 发表一点点想法吧!
Top
7 楼coollzh(良子)回复于 2002-12-19 15:45:46 得分 10
搂主,能把你的问题在描述的详细一点吗?Top
8 楼pingguo_yu(MrApple)回复于 2002-12-19 16:12:27 得分 10
多表连接查询吗?select talbe1.t1,table2.t2 from table1 inner join table2 on table1.t1=table2.t1 where conditions.Top
9 楼zhenxizhou(东门行)回复于 2002-12-19 16:47:18 得分 10
建立四个表的视图。Top
10 楼wltsui(-无招胜有招-)回复于 2002-12-19 16:54:38 得分 0
to zhenxizhou(追忆)
兄弟的意思是在数据库中建吗, 不怎么了解!Top
11 楼rafaelcn(飞扬)回复于 2002-12-20 08:58:30 得分 5
在数据库中建立视图其实也就是一个带 [inner|left | right] join 子句的select 语句而已Top
12 楼zhang865(老人家慢走)回复于 2002-12-20 09:12:03 得分 5
sorry ,
help you to upTop
13 楼wltsui(-无招胜有招-)回复于 2002-12-20 09:50:32 得分 0
谢谢大家, 我就是不想建立视图, 有别的方法吗!Top
14 楼wltsui(-无招胜有招-)回复于 2002-12-20 10:26:16 得分 0
真的这么难吗, 没有人能帮我吗!!
Top
15 楼whereisthedog()回复于 2002-12-20 10:48:24 得分 10
建立四个表的视图。这个办法多好啊??
Top
16 楼wltsui(-无招胜有招-)回复于 2002-12-20 11:14:44 得分 0
to whereisthedog() :
我知道是方便, 我是想不用视图怎么做呢!Top
17 楼zhaolaoxin()回复于 2002-12-20 11:15:59 得分 10
SELECT *
FROM t4 INNER JOIN
(SELECT t3.id3, t3.name3, t3.id2
FROM t3 JOIN
t2 ON t3.id2 = t2.id2) at3 ON t4.id3 = at3.id3
WHERE (at3.id2 = 22)Top
18 楼Panghuang(彷徨)回复于 2002-12-20 13:55:20 得分 5
如果table1的ID1是主键,table2的ID1是外键,而且其他的也一样,可以用以下的试试select c.ID4 from table2 a,table3 b,table4 c
where a.ID2=b.ID2 and b.ID3=c.ID3 and a.ID=预知的ID值Top
19 楼wangzn1979(梦郎2003)回复于 2002-12-20 13:59:27 得分 5
能否把你设计表的思路说说,我看你说了那么多,不是狠了解你如何建表?Top
20 楼sdb72(小二)回复于 2002-12-20 14:10:04 得分 10
select * from table1 where exists (select * from table2 where (table2.id1 = table1.id1) and exits (select * from table3 where table3.id2 = table2.id2 and table3.id1 = table3.id1)....)Top
21 楼wltsui(-无招胜有招-)回复于 2002-12-21 09:28:40 得分 0
uuupTop
22 楼zq_benben(虚空)回复于 2002-12-22 09:38:26 得分 10
我用设置过滤的方法实现过多表查询,速度还可以了,不过就是有点麻烦
你可以试一下Top
23 楼wltsui(-无招胜有招-)回复于 2002-12-22 12:49:54 得分 0
to zq_benben(虚空):
兄弟, 能不能提供源代码或思路, 万分感谢!~Top
24 楼rayhua(农夫山泉)回复于 2002-12-22 12:55:23 得分 3
gzTop




