Здравствуйте. Никак не могу сообразить как провести поиск по подстроке.
Есть таблица с объектами:
objects (
id INT(10),
number VARCHAR(255),
name VARCHAR(255)
)
Есть таблица со свойствами объектов, у одного объекта может быть несколько свойств, поэтому связь один ко многим:
properties (
id INT(10),
object_id INT(10),
name VARCHAR(255),
value VARCHAR(255)
)
Нужно найти объект по его свойствам, например, все объекты зеленого цвета. С одним словом ищу так:
SELECT o.id
FROM objects o
LEFT JOIN properties p ON p.object_id = o.id
WHERE p.value LIKE 'зелен%'
А теперь надо сделать такой же поиск но уже по двум свойствам, например, все круглые объекты зеленого цвета:
SELECT o.id
FROM objects o
LEFT JOIN properties p ON p.object_id = o.id
WHERE p.value LIKE 'зелен%' AND p.value LIKE 'кругл%'
Последний запрос не возвращает ничего. Если использую OR, тогда возвращаются и круглые и зеленые, это не подходит, нужно именно пересечение.
Как в данном случае провести поиск по двум/трем/четырем словам?