2016-10-06 10 views
0

Моя структура базы данных выглядит следующим образом: базы данных Имя: ПродуктыMySQL - Использование FIND_IN_SET на нескольких таблиц с не имеет никакого отношения

id ptype 
1 Cups 
2 Shirts 
3 Cups 
4 Mugs 
5 Fabric 
6 Mat 

База данных Имя: Категории

id category ptype 
1 Clothes Pants, Shirts, Tshirts 
2 Other Mugs, Cups 

Я хочу, чтобы получить список от отдельного ptype (таблица продуктов), которые еще не указаны в таблице категорий ptype

Таким образом, результат будет

ptype 
Fabric 
Mat 

Я попытался с помощью следующей MySQL выберите запрос, но это не похоже на работу

SELECT p.ptype, c.ptype, FIND_IN_SET(p.ptype,c.ptype) FROM products as p, categories as c WHERE FIND_IN_SET(p.ptype,c.ptype) < 1 

возвращает значение FIND_IN_SET как 0 для всех ptypes таблицы продуктов.

+0

У вас есть пробелы после запятых в поле ptype таблицы категорий? – Shadow

+0

Ahh Спасибо, что указали, что у меня есть пробелы после запятых, которых не должно быть. И удаление этого также устраняет проблему. Отправьте это в ответах, и я буду принимать его как решение вопроса. еще раз спасибо –

ответ

1

Удалите пробелы после запятых в поле categories.ptype, чтобы запрос выполнялся. find_in_set() сравнивает иглу с списком значений, разделенных запятыми, и рассматривает пробел после запятых как часть строк, которые он ищет, поэтому совпадение не найдено, если вы ищете строку, которая не содержит пробелов.