日期:2014-05-18  浏览次数:20808 次

请教:多个表的嵌套查询及操作
我有4个表假设为table A B C D
table A
ID N1 N2 N3 N4

1 a b c d
2 e f g h

table B
idN TEXT

a hello
b good
e 123
f asd

(table A中N1,N2的对应于table B中的idN,通过table B查询得到text)

table C
idN TEXT

c das
g hgd

(table A中N3的对应于table C中的idN,通过table C查询得到text)


table D
idN TEXT

d erfsd
h sdfsd

(table A中N4的对应于table D中的idN,通过table D查询得到text)


我想请教各位高手,每次我显示table A的时候,如果要将tableA中的N1-N4所对应的TEXT显示出来,该怎么操作比较好,是要进行四次查询吗?
有没有比较好的方法,是存储过程,还是视图?请详细说明步骤和代码。我是新手,请教各位前辈,这个要有一万条以上的数据使用,所以效率肯定优先,100分散给诸位!谢谢!






------解决方案--------------------
怎么没人啊 顶下先
------解决方案--------------------
SELECT A.ID,BN1.Text,BN2.Text,C.Text,D.Text
FROM A
LEFT JOIN B AS BN1 ON A.N1 = BN1.idN
LEFT JOIN B AS BN2 ON A.N2 = BN2.idN
LEFT JOIN C ON A.N3 = C.idN
LEFT JOIN D ON A.N4 = D.idN
------解决方案--------------------
Left join 
你可以根据需要换成inner join

可能效率低点
------解决方案--------------------
探讨
SELECT A.ID,BN1.Text,BN2.Text,C.Text,D.Text
FROM A
LEFT JOIN B AS BN1 ON A.N1 = BN1.idN
LEFT JOIN B AS BN2 ON A.N2 = BN2.idN
LEFT JOIN C ON A.N3 = C.idN
LEFT JOIN D ON A.N4 = D.idN

------解决方案--------------------
union
------解决方案--------------------
好像也只能一个一个去改吧。
所学不多。我是这么做的。