【发布时间】:2014-05-12 16:02:55
【问题描述】:
我需要按特定属性搜索对象。我有一个表 item_attribute:
item_attribute item_attribute_type_fk item_fk value_text
1 1 1 bbbb 2 2 1 450-240-310 3 3 1 800x250 4 4 1 2,2 5 1 2 HBO等
我试过了:
SELECT item,name,sale_price,producer,producer_code,store_price,I.type_name
FROM ((item INNER JOIN unit_type ON unit_type_fk=unit_type)
INNER JOIN item_store ON item=item_fk)AS I
INNER JOIN item_attribute AS A ON I.item=A.item_fk
WHERE store_price BETWEEN 200.0 AND 300.0
AND (UPPER(value_text) LIKE UPPER('%b%') AND item_attribute_type_fk=1)
AND (UPPER(value_text) LIKE UPPER('%2%') AND item_attribute_type_fk=4)
GROUP BY item,I.type_name ORDER BY item
结果应该是行,其中 item_fk = 1,但实际上选择返回零行。如果我在属性之间将AND 更改为OR,这将导致多行,这不是我想要的,因为搜索只需要返回具有 all 属性的那个对象,那个用户在搜索字段中输入。我应该如何更改代码,它只会通过具有特定 item_attribute_type_fk 的属性来查找值并返回具有所有属性的对象行?
【问题讨论】:
标签: java sql postgresql search attributes