Sql 如何用vb.net在一个水晶报表中显示四表数据
我在做一个社会项目。我正在使用sql数据库和vb.net。数据库中有四个表,如下所示Sql 如何用vb.net在一个水晶报表中显示四表数据,sql,sql-server,Sql,Sql Server,我在做一个社会项目。我正在使用sql数据库和vb.net。数据库中有四个表,如下所示 登记 提名人 成员详细信息 机械细节 我想在一个crystal报告中显示所有四个表中的数据。我尝试使用VS2010的内置sql查询创建者来实现这一点,但当数据库中存在数据时,它返回0行。我还创建了一个数据集和一个表格来填充所有内容,并尝试在crystal report上显示,但结果为零。我的问题如下- SELECT Registration.RegID, Registration.BoardNo,
SELECT Registration.RegID, Registration.BoardNo, Registration.Name, Registration.Gender, Registration.DOB, Registration.RationCardNo, Registration.F_H_Name,
Registration.VoterID, Registration.Eligibility, Registration.PanNo, Registration.Categary, Registration.BankAcNo, Registration.Bussiness, Registration.Phone,
Registration.Address, Registration.Photo, Nominee.NomineeName, Nominee.Relation, Nominee.Adult, Nominee.NDOB, Nominee.Guard_Address,
Nominee.EnrollDate, MemberDetail.F_M_Number, MemberDetail.No_of_Dependent, MemberDetail.Land_Owned, MemberDetail.HouseNo, MemberDetail.MAddress,
MemberDetail.BuiltArea, MemberDetail.HCost, MachinaryDetail.Head, MachinaryDetail.Number, MachinaryDetail.MCost
FROM MachinaryDetail INNER JOIN
MemberDetail ON MachinaryDetail.RegID = MemberDetail.RegID INNER JOIN
Nominee ON MachinaryDetail.RegID = Nominee.RegID INNER JOIN
Registration ON MachinaryDetail.RegID = Registration.RegID
WHERE Registration.RegID='BS-ksd2'
可能一个或多个其他表没有匹配的记录。如果是这样,对该表的
内部联接将导致不返回任何行
您可能需要尝试左外部联接
,以便从左外部联接
子句左侧的表中获取所有内容
试试这个:
SELECT Registration.RegID, Registration.BoardNo, Registration.Name, Registration.Gender, Registration.DOB, Registration.RationCardNo, Registration.F_H_Name,
Registration.VoterID, Registration.Eligibility, Registration.PanNo, Registration.Categary, Registration.BankAcNo, Registration.Bussiness, Registration.Phone,
Registration.Address, Registration.Photo, Nominee.NomineeName, Nominee.Relation, Nominee.Adult, Nominee.NDOB, Nominee.Guard_Address,
Nominee.EnrollDate, MemberDetail.F_M_Number, MemberDetail.No_of_Dependent, MemberDetail.Land_Owned, MemberDetail.HouseNo, MemberDetail.MAddress,
MemberDetail.BuiltArea, MemberDetail.HCost, MachinaryDetail.Head, MachinaryDetail.Number, MachinaryDetail.MCost
FROM MachinaryDetail
LEFT OUTER JOIN MemberDetail ON MachinaryDetail.RegID = MemberDetail.RegID
LEFT OUTER JOIN Nominee ON MachinaryDetail.RegID = Nominee.RegID
LEFT OUTER JOIN Registration ON MachinaryDetail.RegID = Registration.RegID
WHERE RegID='BS-ksd2'
如果在SSMS中运行此查询,它是否返回正确的结果?顺便说一下,所有表都有名为RegID的列,因此查询中的这一部分将导致错误RegID='BS-ksd2'
你确定它会运行吗?@JamesZ抱歉!我的错误。它是Registration.RegIDit返回0行单独检查所有表,其中一个(或多个)没有RegID='BS-ksd2'的任何行。修复数据或使用外部联接(如果结构不正确,则可能不存在数据)。