2014-02-15 43 views
1

PostgreSQL的9.3,運行下面的查詢:語法錯誤連接查詢

select p.name 
from products p 
    join categories c on c.id = p.category_id  
    join descriptions d on d.product_id = p.id 
where p.name LIKE 'word' 
    or c.name LIKE 'word' 
    or d.body LIKE 'word' 

與失敗:在

語法錯誤或接近 「描述」

產品,類別和描述是標準的表格支持導軌模型,其中產品具有一個類別和許多描述。

任何想法?

+1

爲什麼'LIKE'沒有通配符,直接使用'=' – Mihai

+0

查詢很好:http://sqlfiddle.com/#!15/078dd/1動態構建時可能會出現一些錯誤?例如。當您連接SQL字符串或類似的東西時缺少空格。 –

+0

@Mihai我不喜歡使用%,我添加了一些簡化問題,因爲人們可以解決它的pg_trgm問題。 –

回答

0

我沒有看到在此查詢語法錯誤:

select p.name 
from products p join 
    categories c 
    on c.id = p.category_id join 
    descriptions d 
    on d.product_id = p.id 
where p.name LIKE 'word' or c.name LIKE 'word' or d.body LIKE 'word'; 

你確定你有一個名爲數據庫中的表descriptions

我想說明的是,這項工作在SQL Fiddle

得到完全的錯誤與此查詢:

select p.name 
from products p join 
    categories c 
    on c.id = p.category_idjoin 
    descriptions d 
    on d.product_id = p.id 
where p.name LIKE 'word' or c.name LIKE 'word' or d.body LIKE 'word'; 

我懷疑你有一個語法錯誤一樣,在您的實際查詢。

+0

如果表不在那裏,錯誤信息應該不同,不是嗎? –

+0

是的,我確實定義了這些表格。 –

+0

由於某些原因,它在psql中失敗。 –