关于access sql查询多表的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于access sql查询多表的问题相关的知识,希望对你有一定的参考价值。

bumenb,vmyxxsycx,vmtjxxcx,sbzscxtt里四个表查询 sql="SELECT bumenb.zu, vmyxxsycx.fs, vmytjxxcx.sb,sbzscxtt.sbs FROM bumenb left join vmytjxxcx on vmytjxxcx.id = bumenb.id left join vmyxxsycx on vmyxxsycx.zu=bumenb.zu left join sbzscxtt on sbzscxtt.dwid=bumenb.id where bumenb.id<>5 order by vmyxxsycx.fs desc" 运行后提示: Microsoft JET Database Engine '80040e14' 语法错误 (操作符丢失) 在查询表达式 'vmytjxxcx.id = bumenb.id inner join vmyxxsycx on vmyxxsycx.zu=bumenb.zu inner join sbzscxtt on sbzscxtt.dwid=bumenb.id' 中,不知道错误在哪里。inner join 是后来改的

参考技术A access数据库项目中,做外连接时,发现Access不支持两个以上的
left
join
在网上查一下,有哥们说每个
left
join
要加
()
在修改之前(不能执行,ms
sql
里执行以通过)
select
table1.fildes1,
table1.fildes2,table2.fildes1,
table2.fildes2,table3.fildes1,
table3.fildes2
from
table1
left
join
table2
on
table1.fildes1=
table2.fildes1
left
join
table3
on
table1.fildes1=
table3.fildes1
修改之后(执行通过)
每个
left
join
要加
()
select
table1.fildes1,
table1.fildes2,table2.fildes1,
table2.fildes2,table3.fildes1,
table3.fildes2
from
((table1
left
join
table2
on
table1.fildes1=
table2.fildes1)
left
join
table3
on
table1.fildes1=
table3.fildes1
ACcess里面有一个查询先语句先在那里通过了,再放程序里

Linq to SQL 的连表查询(转)

关于数据库的查询中经常需要用到多表的连接查询,这里就简单地展示关于linq的查询功能。

1、单表的查询

[csharp] view plain copy

    var query = from tc in db.tbClass  
             where tc.ClassID == "1"  
                //查询表tbClass  
            select new {  
            ClassID=tc.ClassID,  
            ClassName=tc.ClassName  
                }  

2、多表内连接查询

[csharp] view plain copy

    var query = from s in db.tbStudents  
                                join c in db.tbClass on s.ClassID equals c.ClassID  
                                where s.ClassID == 3  
                                select new  
                                {  
                                    ClassID = s.ClassID,  
                                    ClassName = c.ClassName,  
                                    Student = new  
                                    {  
                                        Name = s.Name,  
                                        StudentID = s.StudentID  
                                    }  
                                };  

内连接与SqL中inner join一样,即找出两个序列的交集。

3、外连接

[csharp] view plain copy

    var query = from s in db.tbStudents  
                                join c in db.tbClass on s.ClassID equals c.ClassID into tbC  
                                from tbCw in tbC.DefaultIfEmpty()  
                                where s.ClassID == 3  
                                select new  
                                {  
                                    ClassID = s.ClassID,  
                                    ClassName = tbCw.ClassName,  
                                    Student = new  
                                    {  
                                        Name = s.Name,  
                                        StudentID = s.StudentID  
                                    }  
                                };  

注意点在与外连接的时候 from外接表的时候需要进行into到新的变量中,然后进行调用DefaultIfEmpty()方法。

 

以上是关于关于access sql查询多表的问题的主要内容,如果未能解决你的问题,请参考以下文章

在SQL中怎样查询一个表的第20条数据到30条数据

多表的慢速 SQL 查询

Linq to SQL 的连表查询(转)

sql语言多表查询

sql 多表关联查询

mysql 如何使用sql查询某一个表的表头