2014-02-17 72 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}%'