我有4个表假设为table A B C D
table A
ID  N1  N2  N3 N41   a   b   c  d
2   e   f   g  htable B
idN    TEXTa    hello
b    good
e    123
f    asd(table A中N1,N2的对应于table B中的idN,通过table B查询得到text)table C
idN   TEXTc    das
g    hgd(table A中N3的对应于table C中的idN,通过table C查询得到text)
table D
idN    TEXTd       erfsd
h       sdfsd(table A中N4的对应于table D中的idN,通过table D查询得到text)
我想请教各位高手,每次我显示table A的时候,如果要将tableA中的N1-N4所对应的TEXT显示出来,该怎么操作比较好,是要进行四次查询吗?
有没有比较好的方法,是存储过程,还是视图?请详细说明步骤和代码。我是新手,请教各位前辈,这个要有一万条以上的数据使用,所以效率肯定优先,100分散给诸位!谢谢!

解决方案 »

  1.   

    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
      

  2.   

    Left join 
    你可以根据需要换成inner join可能效率低点
      

  3.   

    除此之外也没什么好办法了。4个left join 或 inner join速度不会太快。