我使用以下查询查询我的数据:
Select
Convert(varchar(50),PE.dateofstay,103) 'Date of Stay',
C.embossname 'EmbossName',
PE.pastexperience,
U.UserName ,
M.merchantname1
from card C
inner join PastExperience PE on c.EmbossLine=PE.embossline
inner join Users U on U.UserId=PE.userid
inner join Merchant M on M.MerchantID=U.MerchantID
where C.Embossline = '02563987'
-- and (C.EmbossName Like '%DANIEL MWANGALA%' )
AND(PE.dateofstay>='2013-11-03 00:00:00.000' and PE.dateofstay<='2015-11-03 00:00:00.000')
问题是,当我使用EmbossLine
过滤它时,我得到了所需的结果,但是当我尝试使用EmbossName
过滤它时(我已在此处评论过)
我什么都没得到?我这么坚持了吗?为什么会这样?
答案 0 :(得分:0)
简答:您的数据库没有任何符合所有WHERE
条款标准的记录。
你能做什么:
您已经将EmbossName
与问题孩子隔离,现在您需要了解您尝试返回的特定记录与您最初指定的格式不匹配的原因。尝试使搜索更简单,例如:
WHERE C.Embossline = '02563987'
AND C.EmbossName LIKE '%DAN%'
AND PE.dateofstay >= '2013-11-03 00:00:00.000'
AND PE.dateofstay <= '2015-11-03 00:00:00.000'
如果有效,你可以将其升级为更具体的内容,例如
AND C.EmbossName LIKE '%DANIEL%MWANGALA%'
如果失败,只找到您确定应该匹配的EmbossName
记录(没有来自此查询的所有其他联接信息),然后将该值复制并粘贴到文本编辑器中以查找其他字符等在格式化的GUI中可能不太明显。
您的INNER JOIN
条件中的一个或多个也可能会出现问题 - 如果这个Daniel家伙存在于C
但在您加入的其他表中没有任何相应的数据,则不会显示任何结果。尝试将其中一些INNER JOINs
更改为LEFT OUTER JOIN
,看看是否有任何结果。如果在连接列中得到一些NULL
值的行,那么很有可能您加入了没有任何相应记录的表。