2014-02-17 71 views
0
SELECT surplusland_list.*,site_file_sets.*,demandstar.identifier, demandstar.date_due 
FROM surplusland_list,site_file_sets,demandstar 
WHERE surplusland_list.its_number != 'NULL' AND 
     surplusland_list.its_number = demandstar.identifier AND 
     site_file_sts.name LIKE %{demandstar.identifier}% 
ORDER BY surplusland_list.county ASC, surplusland_list.assoc_property ASC, surplusland_list.id ASC 

我怎样才能纠正这种说法?我在%{demandstar.identifier}%发生错误。我已经尝试了这个陈述的许多不同版本,并且似乎无法使它工作。提前致谢!错误与'喜欢'在多个MYSQL声明

回答

0

您的声明有多个问题。首先,你应该学习并使用正确的join语法,并意识到表别名会简化查询。这将表明您没有site_file_sets的加入条件,这显示为cross join

SELECT sl.*, sfs.*, ds.identifier, ds.date_due 
FROM surplusland_list sl join 
    demandstart ds 
    on sl.its_number = ds.identifier cross join 
    site_file_sets sfs 
WHERE sl.its_number != 'NULL' AND 
     sfs.name LIKE %{demandstar.identifier}% 
ORDER BY sl.county ASC, sl.assoc_property ASC, sl.id ASC; 

接下来的两个问题是周围没有like模式单引号的,和!= NULL!= NULL将始终返回NULL,将其视为false。这是改进版本:

SELECT sl.*, sfs.*, ds.identifier, ds.date_due 
FROM surplusland_list sl join 
    demandstart ds 
    on sl.its_number = ds.identifier cross join 
    site_file_sets sfs 
WHERE sl.its_number is not 'NULL' AND 
     sfs.name LIKE '%{demandstar.identifier}%' 
ORDER BY sl.county ASC, sl.assoc_property ASC, sl.id ASC; 

然而,这不会做你想要什么,直到你用适当的joinon条款更换cross join

1

LIKE的参数是一个字符串,应正确引用。

尝试LIKE '%{demandstar.identifier}%'